三種交易模式比較
| 模式 | 行為 | 適用場景 |
| 自動提交(預設) | 每一條 T-SQL 敘述句即為一個獨立交易,自動 COMMIT/ROLLBACK | 一般查詢、簡單 DML |
| 隱式交易 | 開啟後,第一條敘述句啟動交易,後續敘述句隸屬同一交易,需手動 COMMIT/ROLLBACK 結束,隨即自動開啟下一個交易 | 批次處理、需原子性的多步驟操作 |
| 顯式交易 | 以 BEGIN TRANSACTION 明確開始,COMMIT/ROLLBACK 明確結束 | 複雜業務邏輯、錯誤處理、巢狀交易 |
啟用隱式交易設定步驟
- 開啟 SSMS → 工具 → 選項
- 展開 查詢執行 → SQL Server → ANSI
- 勾選 SET IMPLICIT_TRANSACTIONS
- 確定重新開啟查詢視窗生效
程式碼範例
隱式交易
-- 設定後,下列兩句屬於同一交易
DELETE FROM TableA WHERE Id = 1
UPDATE TableB SET Status = 1 WHERE Id = 1
-- 必須明確結束
COMMIT TRANSACTION
-- 或
ROLLBACK TRANSACTION
顯式交易
BEGIN TRANSACTION
DELETE FROM erpdb.dbo.mtl_categories_b
-- 發生錯誤時回滾
ROLLBACK TRANSACTION
-- 正常結束
-- COMMIT TRANSACTION
最佳實務建議
- 開發/測試環境建議啟用隱式交易,養成手動控制交易習慣。
- 生產環境關鍵業務務必使用顯式交易,並搭配
TRY...CATCH 錯誤處理。
- 避免長時間交易鎖定資源,盡量縮短交易範圍。