2011-02-25 70 views
11

我無法測試它並且現在就得到我自己的解決方案,而且我還沒有在MSDN或谷歌上找到這些信息。是否需要在事務中封裝單個合併語句(使用插入,刪除和更新)?

我被質疑是否需要在一個事務中插入,刪除和更新給定表中的記錄的合併語句(如果插入完成後,例如在更新過程中發生故障),或者如果有的操作失敗,整個合併也失敗了。

如果我們包含一個事務,也許它不會造成危害,但爲了好奇,我們希望更多地瞭解合併內部。

回答

20

SQL Server中的任何語句本身都是一個事務。

也就是說,它是原子的:一切成功或都失敗

明確的事務將被用於將多個單個原子語句成一個大原子事務。

這是MERGE的美妙之處:不需要顯式的事務和3個單獨的語句。

2

如果顯式未啓動,SQL Server中的所有DML語句都會在隱式事務中運行。當然,您仍然可以將其包裝在自己的明確交易中,但不應該需要

0

每個查詢總是在事務中運行。如果您不創建交易,則查詢本身具有自己的交易。如果出現任何問題,整個查詢將回滾。

如果你想做更多的錯誤處理,你可能需要一個事務,但它不是必要的數據庫的一致性。

相關問題