首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 交易核心觀念:ACID 特性、三種模式與 T-SQL 控制語法

     編輯:關於SqlServer

交易定義

交易是並發控制基本單位,由使用者定義的一組操作序列組成,具有「全做或全不做」的不可分割性。SQL Server 透過交易機制將邏輯相關操作綁定,確保資料完整性。

交易控制語法

BEGIN TRANSACTION
-- 一組 SQL 陳述式
COMMIT TRANSACTION   -- 提交:寫入磁碟,交易正常結束
-- 或
ROLLBACK TRANSACTION -- 回滾:撤銷所有已完成操作,回到交易起始狀態

三種交易模式

模式啟動方式結束方式適用場景
自動提交每條陳述式隱含 BEGIN每條陳述式隱含 COMMIT預設模式,簡單單一操作
顯式交易BEGIN TRANSACTIONCOMMIT / ROLLBACK多步驟業務邏輯,需原子性保證
隱性交易上一筆交易結束時自動啟動新交易COMMIT / ROLLBACK連續多筆交易,減少 BEGIN 呼叫

ACID 四大特性

A - Atomicity(原子性)
交易為邏輯工作單位,包含操作要麼全做,要麼全不做。
C - Consistency(一致性)
交易完成後,資料庫從一個一致性狀態轉移到另一個一致性狀態(完整性約束、觸發器、規則均滿足)。
I - Isolation(隔離性)
一個交易的執行不受其他交易干擾;並發控制機制(鎖、版本儲存)保證隔離等級。
D - Durability(持久性)
交易一旦 COMMIT,其對資料的修改永久生效,即使系統故障也能透過記錄檔恢復。

T-SQL 進階控制

  • 儲存點:SAVE TRANSACTION savepoint_name → ROLLBACK TRANSACTION savepoint_name 部分回滾
  • 錯誤處理:TRY...CATCH 區塊搭配 XACT_STATE() 判斷交易狀態
  • 分散式交易:MSDTC 協調跨伺服器交易,BEGIN DISTRIBUTED TRANSACTION

最佳實務

  • 交易範圍越小越好,縮短鎖定資源時間
  • 避免在交易中進行使用者互動、網路呼叫、耗時運算
  • 統一錯誤處理模式:BEGIN TRY...BEGIN TRAN...COMMIT...END TRY BEGIN CATCH...IF XACT_STATE()<>0 ROLLBACK...THROW; END CATCH
  • 動態 SQL 交易控制寫在呼叫端,不寫在動態字串內
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved