• Sql Server 三种事务模式


    显式事务
    显式事务(Explicit Transaction)是由设计人员明确定义事务的启动与结束的一种事务。
    可使用 BEGIN TRANSACTION、COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION、ROLLBACK WORK 等语句来定义显式事务。

    Create PROCEDURE sp_test(@ID varchar(50))
    AS 
    Begin Tran --事务开始 
    Update Tb set CDate=getdate() where TbID=@ID 
    if @@ERROR >0 --若有错误 
    BEGIN 
        
    ROLLBACK TRAN --事务还原 
        Return 
    End 
    DECLARE @PID varchar(50),@TbQty int 
    DECLARE cur_1 CURSOR FOR SELECT PID, Qty FROM TbDetail where TbID=@ID --声明游标数据事务 
    OPEN cur_1 --打开游标 
    FETCH NEXT FROM cur_1 INTO @PID,@TbQty --从游标获取两个字段值到变量 
    WHILE @@FETCH_STATUS = 0 --用循环逐项处理 
    BEGIN 
        
    Update Ta set TaQty=TaQty-@TbQty where PID=@PID 
        
    FETCH NEXT FROM cur_1 INTO @PID,@TbQty 
        
    if @@ERROR >0 –若有错误 
        
    Begin
            
    ROLLBACK TRAN --事务还原 
            CLOSE cur_1 --关闭及释放游标 
            DEALLOCATE cur_1 
            
    BREAK 
        
    END 
    END 
    CLOSE cur_1 
    DEALLOCATE cur_1 
    COMMIT TRAN --事务提交 

    自动提交事务
    这是 SQL Server 的默认模式,所有未特别声明的事务,都被视为自动提交的事务。但
    是只以一个操作作为事务范围,如一个 Update 或 Delete 等。当事务完成时,每个单独的
    T-SQL 语句都将被提交或因出现错误而还原。

    隐式事务
    通过 API 函数或 T-SQL 的 SET IMPLICIT_TRANSACTIONS ON 语句将隐式事务模式
    设置为打开。下一个语句会自动开始一项新的事务。当该项事务完成时,下一个 T-SQL 语
    句会再开始一项新的事务。

    SET IMPLICIT_TRANSACTIONS ON 
     
    INSERT INTO Ta (aa,bb) VALUES ('11''22'
    COMMIT TRANSACTION 
    GO 

    以上程序表示先使用“SET IMPLICIT_TRANSACTIONS ON”启动隐式事务,然后在
    下一行程序创建事务,以 Insert 语句添加一项记录至 Category 数据表,最后再用 COMMIT
    TRANSACTION 提交事务。提交之后若还有程序,会再开始新的事务。总之,隐式事务的
    意思是由 SQL Server 系统在所有提交、还原之后,自动创建新事务。

  • 相关阅读:
    洛谷 P2766 最长不下降子序列问【dp+最大流】
    洛谷 P3254 圆桌问题【最大流】
    洛谷 P2764 最小路径覆盖问题【匈牙利算法】
    洛谷 P2763 试题库问题【最大流】
    洛谷 P2762 太空飞行计划问题 【最大权闭合子图+最小割】
    洛谷 P2761 软件补丁问题 【spfa】
    洛谷 P2754 星际转移问题【最大流】
    洛谷 P1251 餐巾计划问题【最小费用最大流】
    spoj 371 Boxes【最小费用最大流】
    poj 3680 Intervals【最小费用最大流】
  • 原文地址:https://www.cnblogs.com/tohen/p/1791832.html
Copyright © 2020-2023  润新知