博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 事务处理 回滚事务
阅读量:6511 次
发布时间:2019-06-24

本文共 1776 字,大约阅读时间需要 5 分钟。

 

--创建表:

 

GO

CREATE TABLE [dbo].[tb1](

     [Id] [int] NOT NULL,

     [c1] [nvarchar](50) NULL,

     [c2] [datetime] NULL,

CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED

(

     [Id] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] )

ON [PRIMARY]

GO

 

--解决方案(一)

declare   @iErrorCount   int  

set @iErrorCount = 0  

begin tran Tran_2015_09_30

  insert into tb1(Id, c1) values(1,'1')  

  set @iErrorCount=@iErrorCount+@@error  

  insert into tb1(Id, c1) values(2,'2')  

  set @iErrorCount=@iErrorCount+@@error  

  insert into tb1(Id, c1) values('xxxx3','3')  

  set @iErrorCount=@iErrorCount+@@error  

  insert into tb1(Id, c1) values(4,'4')  

  set @iErrorCount=@iErrorCount+@@error  

  insert into tb1(Id, c1) values(5,'5')  

  set @iErrorCount=@iErrorCount+@@error  

if @iErrorCount=0

begin    

  COMMIT TRAN Tran_2015_09_30 --执行事务

end

else  

begin    

  ROLLBACK TRAN Tran_2015_09_30 --回滚事务

end

GO

 

--解决方案(二)

begin try

     begin tran Tran_2015_09_30
 
        insert into tb1(Id, c1) values(1,'1')
 
        insert into tb1(Id, c1) values(2,'2')
 
        insert into tb1(Id, c1) values('xxxx3','3')
 
        insert into tb1(Id, c1) values(4,'4')
 
        insert into tb1(Id, c1) values(5,'5')
 
    COMMIT TRAN Tran_2015_09_30
end try
begin catch
     raiserror 50005N'出错了'
     ROLLBACK TRAN Tran_2015_09_30  --回滚事务
end catch

GO

 

--解决方案(三)

--set XACT_ABORT ON   ---如果不设置该项为ON,在sql中默认为OFF,那么只只回滚产生错误的 Transact-SQL 语句;设为ON,回滚整个事务

SET XACT_ABORT ON  --语句产生运行时错误,则整个事务将终止并回滚。

Begin Tran
    INSERT INTO tb1(Id, c1) VALUES(1,'1')
    INSERT INTO tb1(Id, c1) VALUES('XX2','2') --此句产生错误时,就会回滚整个事务
Commit Tran

 

GO

 

 

begin tran t1 ---启动一个事务

update [water].[dbo].[ErrorInf]
set ErrorMessage='test'
where ID=6
insert into [water].[dbo].[ErrorInf]([ID],ErrorMessage,[Description])
Values(1,'test1','test1')
commit tran t1  ---提交事务

 

 

--//参考:

1.

   ;

2.

转载地址:http://ckbfo.baihongyu.com/

你可能感兴趣的文章
ASCII码
查看>>
java常用四种排序源代码
查看>>
win7 下硬盘安装Redhat7
查看>>
js图表控件:highcharts的应用
查看>>
Redis 分布式锁的正确实现方式
查看>>
mysqldump 备份命令使用中的一些经验总结
查看>>
Linux下MySql安装配置方法总结
查看>>
本IT博客用于域名投资、互联网、资源下载等相关干货收藏和学习
查看>>
ArrayList底层实现
查看>>
【转载】Java程序设计入门 (二)
查看>>
which、whereis、location和fand的区别
查看>>
IP地址和子网划分学习笔记之《子网掩码详解》
查看>>
单词最近距离
查看>>
高性能网站性能优化与系统架构(ZT)
查看>>
程序猿知道英语词汇
查看>>
数据存储(两)--SAX发动机XML记忆(附Demo)
查看>>
ECSHOP添加购物车加图片飞入效果
查看>>
谈谈SQL 语句的优化技术
查看>>
数据结构Java实现04----循环链表、仿真链表
查看>>
ecshop如何判断缓存文件是否能更新
查看>>