我正在做一個存儲過程,其中多個表插入和更新依賴於它們之前的插入。我是否需要做任何事情來確保這些操作完成(如提交),或者插入存儲過程中,調用總是完成並按順序完成,而我什麼也不擔心?第二個sql調用依賴於另一個
4
A
回答
2
你擔心什麼,你就需要去關注的,如果說你正在創建一個永久表(非臨時/非變量表),並打算做鑲入的唯一方案它之後。要通過運行時錯誤指示表不存在,您必須在創建表之後但在插入記錄之前放置「GO」。之後,您可以使用「GO」命令確保所有過程命令都已完成,然後再繼續執行任何代碼,但在大多數情況下不需要。如果你執行一個插入,然後在插入完成之後不應該評估更新邏輯後立即執行更新,但是如果你想額外確定一下,只需在它們之間插入一個「GO」,然後就可以毫無疑問。
1
如果您有幾條語句,並且要確保它們全部完成,或者沒有一條完成,那麼您應該使用事務。插入或更新語句可能會失敗的原因很多,因此檢查是一個好主意。
在您發言前使用BEGIN TRANSACTION
,之後使用COMMIT TRANSACTION
。如果您想取消批次中已完成的任何工作,也可致電ROLLBACK TRANSACTION
。
將這些語句包裝在TRY/CATCH
塊中以嘗試正常處理任何錯誤。
BEGIN TRY
BEGIN TRANSACTION
--insert/update statements go here
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH
相關問題
- 1. C++每個類依賴於第二個
- 2. 依賴屬性依賴於另一個
- 3. 依賴於另外一個
- 4. 依賴於第一個選擇選項更改第二個選擇選項
- 5. Ruby on Rails關係降低傾向第二個依賴於第一個
- 6. 添加依賴於第一個的第二個類型的錯誤
- 7. 屬性依賴於另一個字段
- 8. 函數依賴於另一個函數
- 9. 微調依賴於另一個微調android系統
- 10. SQL rand()依賴於另一列?
- 11. 如何使用依賴於另一個jar的一個jar
- 12. Android:RxJava與OkHttp:如何使第二次調用是依賴於第一?
- 13. 將數據插入兩個表,一個依賴於另一個
- 14. 與第二個查詢Faceing問題,它是依賴於第一查詢
- 15. 如何使一個項目的jar依賴於另一個jar
- 16. 如何開發寶石,其中一個依賴於另一個
- 17. 如何使一個nsi部分依賴於另一個?
- 18. 如何使一個自定義狀態依賴於另一個?
- 19. 使用第二個按鈕調用另一個方法
- 20. 依賴於依賴於SQL中另一列的子查詢的列
- 21. 在另一個函數中調用第二個函數
- 22. getline()不能用於第二個調用
- 23. Spring批處理並行處理兩個任務,但第二個任務依賴於第一個任務
- 24. 如何開發這個依賴於另一個ListView的ListView?
- 25. 如何基於第一個微調器和第二個微調器來填充第二個微調器?
- 26. 2個相同值紡紗如何依賴於一個離心器隱藏在第二微調該值
- 27. 如何使用Gradle構建依賴於另一個JAR的JAR
- 28. 使用依賴於另一個庫的庫的CMake項目
- 29. 刪除XML的依賴於另一個節點ID使用XSL
- 30. Java構造函數需要一個依賴於依賴於第一個構造函數的另一個構造函數的條件。 (蛇咬尾)
好點,你應該總是有適當的錯誤處理來補償運行時錯誤/失敗,但是在乾淨的場景中,SQL操作按照它們寫入的順序完成。這就是爲什麼它是一種腳本語言,而不是面向對象。 – 2013-02-11 15:24:12
感謝你們倆。由於缺少處理該數據庫的錯誤,因此我需要更多地使用提交。 我認爲'去'聲明會給我一些想法,但它聽起來像我不需要它。 – KenK 2013-02-11 15:36:06
我是新來的stackoverflow-我應該標記爲答案或只有最相關? – KenK 2013-02-11 15:37:31