交易是並發控制基本單位,由使用者定義的一組操作序列組成,具有「全做或全不做」的不可分割性。SQL Server 透過交易機制將邏輯相關操作綁定,確保資料完整性。
BEGIN TRANSACTION -- 一組 SQL 陳述式 COMMIT TRANSACTION -- 提交:寫入磁碟,交易正常結束 -- 或 ROLLBACK TRANSACTION -- 回滾:撤銷所有已完成操作,回到交易起始狀態
| 模式 | 啟動方式 | 結束方式 | 適用場景 |
|---|---|---|---|
| 自動提交 | 每條陳述式隱含 BEGIN | 每條陳述式隱含 COMMIT | 預設模式,簡單單一操作 |
| 顯式交易 | BEGIN TRANSACTION | COMMIT / ROLLBACK | 多步驟業務邏輯,需原子性保證 |
| 隱性交易 | 上一筆交易結束時自動啟動新交易 | COMMIT / ROLLBACK | 連續多筆交易,減少 BEGIN 呼叫 |
SAVE TRANSACTION savepoint_name → ROLLBACK TRANSACTION savepoint_name 部分回滾TRY...CATCH 區塊搭配 XACT_STATE() 判斷交易狀態BEGIN DISTRIBUTED TRANSACTIONBEGIN TRY...BEGIN TRAN...COMMIT...END TRY BEGIN CATCH...IF XACT_STATE()<>0 ROLLBACK...THROW; END CATCH