标签归档:事务

mssql sqlserver 隐式事务简介和举例说明


摘要:
下文讲述”隐式事务”的说明简介,如下所示:
实验环境:sql server 2008 R2


隐式事务 简介

1.隐式事务 开启和关闭方法
当我们在查询分析器中输入以下命令,则开启”隐式事务”
SET IMPLICIT_TRANSACTIONS ON;
输入 :
SET IMPLICIT_TRANSACTIONS OFF; —则关闭 “隐式事务”

当我们使用”隐式事务”模式操作sql脚本时,我们只需提交和回滚事务,
sql引擎自动开启一个新的”隐式事务”,

2.隐式事务 使用简介

  ---1.启动SSMS,并连接至指定的数据库引擎上
  ---2.新建 查询 窗口
  ---3.输入以下sql脚本
    SET IMPLICIT_TRANSACTIONS ON; ---开启隐式事务属性
    go
    ---在隐式事务中建表
    create table [maomao365]
    (keyId int)
   go 
   select @@trancount as [当前事务个数统计]
   ---返回1,代表当前存在事务运行
   insert into  [maomao365] (keyId) values(88)
   go
   rollback transaction  ---回滚事务,当前事务被回滚提交
   go 
     select @@trancount as [当前事务个数统计]
    ---返回0,代表当前不存在事务运行
    go 

  select * from [maomao365]
  go 
  ---系统提示不存在此对象
   -----第二阶段 ,再次执行建表语句
     create table [maomao365]
    (keyId int)
   go   
    select @@trancount as [当前事务个数统计]
  ---返回1 ,可以看出隐式事务自动开启
   commit transaction 
   go
  select * from [maomao365]
   go 

SET IMPLICIT_TRANSACTIONS OFF;---关闭隐式事务


从以上的实验,我们可以看出,当隐式事务属性打开后,不需要使用begin tran 启动事务,但是需要使用rollback 或commit tran关闭事务

mssql sqlserver “显式事务处理”简介


摘要:
下文讲述sqlserver 中显式事务处理,如下所示:
实验环境:sql server 2008 R2


显式事务:采用sql脚本明确的指定事务的开始和结束标志。

显式事务中:
使用begin transaction 表示事务开始
使用commit transaction 表示事务成功并提交
使用rollback transaction 表示事务回滚

显式事务属性的生命周期:
当我们采用begin transaction 开始定义一个事务时,此时事务为”显式事务”,
当”显式事务”提交或回滚后,显式事务属性消失,此时如果不begin tran 开始事务,
那么sql事务将会回到系统默认的事务类型。



显式事务举例说明:

   begin try
    begin transaction 
       /*sql脚本*/
    commit transaction  --提交事务
   end try 
   begin catch 
     select @@error as [错误号]
     rollback transaction ---回滚事务
   end catch 

mssql sqlserver 自动事务处理模式简介


摘要:
下文介绍sqlserver中的自动事务处理模式
实验环境:sql server 2008 R2


自动事务处理:
自动事务处理是sql引擎中的自动事务管理模式。
一条sql语句要么执行失败,要么执行成功。
自动事务如何产生:
当我们没有显式或隐式指定事务模式时,则数据库引擎会自动产生自动事务模式。


例:

  create table [maomao365]
  (keyId int not  null ,info varchar(30) not null )
go

insert into [maomao365]
 (keyId,info )values(1,'sqlblog')

insert into [maomao365]
 (keyId,info )values(null,'sqlblog')
insert into [maomao365]
 (keyId,info )values(3,'sqlblog')

/*
  以上三条sql语句同时运行,但是没有显示指定事务,
 sql引擎自动将三条语句独自进行自动事务处理,
分别生成三个事务,所以第一条插入语句执行成功
第二条语句执行失败,进行了回滚操作,程序退出
由于程序发生异常,第三条语句没有运行
*/

 select keyId,info from [maomao365]
go

truncate table [maomao365]
drop       table [maomao365]
go