2010-09-16 65 views
0

我有一個語句只有一個UPDATE命令。如果我手動終止它將所有的結果回滾?SQL Server會在終止後回滾單個語句嗎?

+0

你是什麼意思的「手動終止」? – 2010-09-16 07:59:30

+0

我的意思是按SSMS中的'取消執行查詢'按鈕 – Dima 2010-09-16 13:24:44

回答

3

如果你殺死在其上發佈了更新的連接,或管理取消查詢時,更新將回滾。 SQL中的每個DML語句都在事務的上下文中運行 - 如果不存在,則SQL Server將automatically create一個,並在語句完成後提交它。

3

如果沒有發生錯誤,那麼這種說法不能回滾

Update table 
Set MyCol = 'foo' 
Where MyOtherCol = 'bar' 

然而,你可以在SQL做什麼是運行下面的語句組合在一起:

begin transaction 

    Update table 
    Set MyCol = 'foo' 
    Where MyOtherCol = 'bar' 

然後執行任何檢查你可能需要做。如果一切正常,那麼你可以運行以下。

commit transaction

如果您需要取消更新,你可以運行這個

rollback transaction