SQL Server 交易 TRANSACTION

如果有多個 SQL 語法要執行,需要確保每一個都成功,不然就要還原執行結果,可以使用「交易(Transaction)」來輕鬆達成。

標記開始 Transaction:
    
BEGIN TRANSACTION;
    

開始執行 Transaction 後,之後所有的操作都會被納入到同一個 Transaction 中,直到提交(Commit) 或是復原(Rollback)。

確認 Transaction:
    
COMMIT TRANSACTION;
    

復原 Transaction:
    
ROLLBACK TRANSACTION;
    

範例

剛看完語法可能會覺得有點模糊,這裡來示範一次。

假設要將 Users 和 Employee 兩張資料表的資料都更新,並且要確保兩個都更新成功,則在開始執行更新語法前可以先標記開始 Transaction:
    
BEGIN TRANSACTION;
    

執行更新語法 1:
    
update Users set DisplayName = 'ruyut' where Id = 1;
    

執行更新語法 2:
    
update Employee set DisplayName = 'ruyut' where Id = 1;
    

兩個都更新成功後就執行 Commit ,將 Transaction 的內容實際更新到資料庫中:
    
COMMIT TRANSACTION;
    

在還沒 Commit 前,我們可以隨時執行 Rollback ,取消剛剛的動作,讓我們執行的變更不要真正的進入到資料庫中:
    
ROLLBACK TRANSACTION;
    



參考資料:
Microsoft.Learn - Transactions (Transact-SQL)
Microsoft.Learn - BEGIN TRANSACTION (Transact-SQL)

留言

張貼留言

如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com