假設有一個銀行轉賬操作,需要從賬戶 A 轉出 100 元到賬戶 B:
START TRANSACTION;
-- 執行交易操作
UPDATE accounts SET balance = balance - 100 WHERE account_id = 'A';
UPDATE accounts SET balance = balance + 100 WHERE account_id = 'B';
-- 檢查是否有錯誤,根據需要提交或回滾
IF (@@ERROR = 0)
BEGIN
-- 沒有錯誤,提交交易
COMMIT;
END
ELSE
BEGIN
-- 發生錯誤,回滾交易
ROLLBACK;
END
交易控制的優點
- 原子性(Atomicity):確保交易中的所有操作要麼全部執行,要麼全部不執行。
- 一致性(Consistency):確保交易執行後,資料庫從一個一致狀態轉換到另一個一致狀態。
- 隔離性(Isolation):確保同一時間的多個交易互不干擾,避免並發操作引起的數據不一致。
- 持久性(Durability):確保交易提交後,其變更會永久保存在資料庫中,即使系統故障也不會丟失。
總結
使用 SQL 交易機制可以有效管理和控制多個 SQL 操作,確保資料的一致性和完整性。通過開始交易、執行操作、提交或回滾交易,可以避免資料處於不合理的狀態,從而提高資料庫應用的可靠性和穩定性。