Transaction(交易,大陸譯名:事务)

將多個資料庫操作的 SQL 指令 group 成一個執行的單元區塊( a single execution unit ),以特定的字串( Begin Transaction )來標記交易開始,一個交易可能包括了多個資料庫操作指令來完成,交易結束時的動作有兩個,若所有的操作全部執行成功,交易才算成功並提交變更( Commit Transaction ),若當中有發生錯誤失敗,則整個交易宣告失敗並回復所有變更( Rollback Transaction )。

例:

DECLARE @chk tinyint
SET @chk = 0
Begin Transaction [Trans_Name] -- Trans_Name 交易名稱可自訂或者是不寫
    
    -- 可編寫多個 SQL 指令
    INSERT INTO [Table_Name] VALUES( 'Field_Value_1' );
    IF @@Error <> 0 BEGIN SET @chk = 1 END

    INSERT INTO [Table_Name] VALUES( 'Field_Value_2' );
    IF @@Error <> 0 BEGIN SET @chk = 1 END

IF @chk <> 0 BEGIN -- 若是新增資料發生錯誤
    Rollback Transaction [Trans_Name] -- 復原所有操作所造成的變更
END
ELSE BEGIN
    Commit Transaction [Trans_Name] -- 提交所有操作所造成的變更
END

 

參考資料:
http://www.codeproject.com/Articles/4451/SQL-Server-Transactions-and-Error-Handling

 

arrow
arrow
    文章標籤
    T-SQL MS-SQL
    全站熱搜

    Aixo 發表在 痞客邦 留言(0) 人氣()