SQL Server事务简单使用
来源:互联网 发布:python 密度估计 编辑:程序博客网 时间:2024/06/07 23:12
首先关于事务的几个操作如下:
begin tran -- 开启事务commit tran -- 提交事务rollback tran -- 回滚事务
-- 新建一个测试表demo,id自增create table demo( id int not null IDENTITY(1,1), val int not null)insert into demo values (5) insert into demo values (2) select * from demo
set xact_abort on -- 设置当运行发生错误时,整个事务终止并回滚begin tran -- 开启事务insert into demo values (5) insert into demo values (2) insert into demo values (5) insert into demo values (null)insert into demo values (6) commit tran -- 提交事务go
当执行到 insert into demo values (null)
这一句时会发生错误,因为设置了 set xact_abort on
,因此所有操作会回滚。
操作结果:
再看一下数据
select * from demo
跟刚刚一样,数据没有增加。
接下来对比一下不设置 xact_abort on
的情况。
set xact_abort offbegin tran -- 开启事务insert into demo values (5) insert into demo values (2) insert into demo values (5) insert into demo values (null)insert into demo values (6) commit tran -- 提交事务go
数据:
select * from demo
可以看到除了 insert into demo values (null)
这一句,其他数据是有插到数据库的。
注意:
关于事务回滚还有一点,我建的 demo
表的 id
字段是自增的。
看最后的那张图,id=2
的下一条是 id=7
,这说明了其实除了insert into demo values (null)
这一句,其他语句是已经执行了,插入到数据库了的,只是因为遇到错误回滚时又把它们删除了。所以再插入的时候 id
就是从7开始了。
PS:其实不使用 set xact_abort on
也可以手动捕捉错误进行回滚。
这里只是简单介绍一下。
- 在每个单独的DML语句执行后,立即判断执行状态,并做相应处理。
begin transaction declare @errorSum int --定义局部变量 set @errorSum=0 --初始化临时变量 update bank set currentMoneycurrentMoney= currentMoney-1000 where customerName='张三' set @errorSum=@errorSum+@@error --累计是否有错误 update bank set currentMoneycurrentMoney= currentMoney+1000 where customerName='李四' set @errorSum=@errorSum+@@error --累计是否有错误 if @errorSum<>0 --如果有错误 begin rollback transaction end else begin commit transaction end go
2. 可利用 try…catch 异常处理机制。
begin tran begin try update statement 1 ... delete statement 2 ... endtry begin catch if @@trancount > 0 rollback tran end catch if @@trancount > 0 commit tran go
参考:
一个SQL Server数据库事务的使用示例
SQL Server在存储过程中编写事务处理代码的三种方法
0 0
- SQL Server事务简单使用
- SQL Server 事务的使用
- sql server事务的使用
- SQL SERVER存储过程中使用事务
- SQL SERVER存储过程中使用事务
- Sql Server使用事务实现--转账问题
- SQL server 事务介绍,创建与使用
- SQL server 事务介绍,创建与使用
- 在SQL Server 2008中使用事务
- 使用SQL事务的一个简单架构
- t-sql - 事务使用的简单例子
- sql server 索引简单使用
- 使用SQL SERVER的Link Server实现分布式事务
- SQL Server 事务日志
- sql server 事务
- sql server 事务示例
- SQL Server事务操作
- Sql Server 事务嵌套
- robotStudio使用
- SpringMVC+POI下载文件模板和导出Excel
- Flume Error must not generate more than one output value per record field解决
- iOS 10中info.plist 文件 Privacy - Camera Usage Description等
- 移动图形芯片的故事
- SQL Server事务简单使用
- 文本滚动元素 marquee 研究报告
- ServletConfig和ServletContext
- linux下查询进程占用的内存方法总结
- 使用SVN问题总汇
- php中array_filter函数的总结
- jQuery获取textarea内容
- ViewStub的实现
- 数据结构实验之查找五:平方之哈希表