标签归档:sql事务

mssql sqlserver 取消事务中部分执行语句


摘要:
下文讲述取消事务中部分执行语句的方法分享,如下所示:
实验环境:sql server 2008 R2

在sql server 数据库的sql脚本中,如果取消部分执行语句,我们可以采用 “事务的保存点”的功能,达到事务回滚到指定位置,然后提交其它脚本执行部分。
事务保存点设置方法:

     begin tran a;

	 update tableName  ... where keyId =12

	 save tran b;

	 update tableNameB ... where keyId =8

	 if @@error <>0
	 begin
	   rollback tran b;
	   commit tran a;
	 end
	 else
	 begin
	   
	   commit tran a;
	 end
  

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