• SQL事务


    Begin Transaction:开始一个事务;
    Commit Transaction:提交事务;
    Rollback Transaction:回滚事务。

    其中Commit Transaction 与Rollback Transaction 都必须有对应的Begin Transaction 才能正确被执行。

    如:

    Begin Tran
    ……
    Rollback Tran
    Commit Tran

    以上事务只执行了回滚操作。执行Commit Tran系统会返回3902错误,即@@Error=3902,COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。

    Begin Tran
    ……
    Commit Tran
    Rollback Tran

    以上事务员执行了提交事务操作。执行Rollback Tran系统会返回3903错误,即@@Error=3903,ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。

    实例:使用@@Error返回值来控制回滚

    设有表a,有字段num (int),name (varchar(20));表b,有字段num (int),Add (varchar(50))。以下是一个存储过程,使用了@@Error的返回值来控件事件回滚:

    CREATE PROCEDURE [dbo].[TranTest] 
    @num int,@name varchar(20),@Add varchar(20)
    AS
    DECLARE @ErrorA int,@ErrorB int
    begin transaction aa
    insert into a values(@num,@name)
    SELECT @ErrorA = @@error
    insert into b values(@num,@Add)
    SELECT @ErrorB = @@error
    if @ErrorA>0 or @ErrorB>0
    begin
    Rollback transaction aa
    end
    else
    commit transaction aa
    GO
    
    
    

    CREATE PROCEDURE [dbo].[TranTest] 
    @num int,@name varchar(20),@Add varchar(20)
    AS
    DECLARE @Err int
    begin transaction aa
    insert into a values(@num,@name)
    if @@error>0 begin SELECT @Err = 1 end
    insert into b values(@num,@Add)
    if @@error>0 begin SELECT @Err = 1 end
    if @Err>0
    begin
    Rollback transaction aa
    end
    else
    commit transaction aa
    GO 
    
    
  • 相关阅读:
    BFS POJ 2251 Dungeon Master
    DFS POJ 1321 棋盘问题
    构造 Codeforces Round #275 (Div. 2) C. Diverse Permutation
    线段树+树状数组+贪心 HDOJ 5338 ZZX and Permutations
    快速幂取模 POJ 3761 bubble sort
    矩阵快速幂 POJ 3070 Fibonacci
    矩阵快速幂 POJ 3735 Training little cats
    DP+矩阵快速幂 HDOJ 5318 The Goddess Of The Moon
    L2-001. 紧急救援(PAT)~最短路应用
    ~psd面试 求最长回文序列 DP求解
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1804609.html
Copyright © 2020-2023  润新知