交易是資料庫將多條 DML 綁定為不可分割工作單元的機制:要麼全做,要麼全不做(ACID 特性)。解決多表更新一致性問題的核心工具。
刪除部門需同步刪除員工。若第一條 DELETE department 成功、第二條 DELETE employee 失敗(斷電、錯誤),資料庫將永久處於不一致狀態。交易確保兩條語句原子性執行。
BEGIN TRAN[SACTION] [transaction_name | @tran_var]
-- DML 陳述式
COMMIT [TRAN[SACTION] [transaction_name | @tran_var]]
BEGIN TRAN / COMMIT TRAN 可簡寫。CHAR/VARCHAR/NCHAR/NVARCHAR。COMMIT 不實際寫入,僅外層最外層 COMMIT 真正提交。

ROLLBACK [TRAN[SACTION] [transaction_name | @tran_var | savepoint_name | @savepoint_var]]
BEGIN TRAN)。BEGIN TRAN。SAVE TRAN[SACTION] {savepoint_name | @savepoint_var}
ROLLBACK TO savepoint,保留前段操作。

注意:若不指定回滾目標,ROLLBACK會回滾至交易起始;巢狀交易回滾至最近的BEGIN TRAN。
BEGIN TRY
BEGIN TRAN
-- 步驟 1
SAVE TRAN Step1
-- 步驟 2
SAVE TRAN Step2
-- 步驟 3
COMMIT TRAN
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRAN -- 或 ROLLBACK TO Step2
-- 錯誤處理
END CATCH
熟練掌握 BEGIN/COMMIT/ROLLBACK、巢狀交易行為與儲存點部分回滾,是撰寫健壯資料庫應用程式、保障資料一致性的核心技能。