社区
MS-SQL Server
帖子详情
关于事务的问题
laughsmile
2006-01-22 12:11:03
现在有2部分sql.第一部分sql是一系列update,第2部分sql是insert ...select...
第2部分的sql的select结果依赖于第一部分sql,也就是第一部分sql提交之后,然后执行第2部分sql才有意义.
但是问题是:现在要求第2部分sql如果出错,所有sql都要回滚,请问如何解决.
...全文
139
5
打赏
收藏
关于事务的问题
现在有2部分sql.第一部分sql是一系列update,第2部分sql是insert ...select... 第2部分的sql的select结果依赖于第一部分sql,也就是第一部分sql提交之后,然后执行第2部分sql才有意义. 但是问题是:现在要求第2部分sql如果出错,所有sql都要回滚,请问如何解决.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
laughsmile
2006-01-22
打赏
举报
回复
我试试看,谢谢啦:)
OracleRoob
2006-01-22
打赏
举报
回复
--那就用嵌套事务
create table t1 (a int primary key)
go
set xact_abort on
go
begin tran
begin tran
insert into t1 values (1)
commit tran --提交第一部分SQL语句
select * from t1
--表中有数据
insert into t1 values (1) --主键冲突,整个事务中所有语句操作回滚,包括第一部分SQL语句的更新操作
commit tran
go
select * from t1
--结果表中没有记录
drop table t1
go
laughsmile
2006-01-22
打赏
举报
回复
TO wangtiecheng(cappuccino):
不好意思,可能我没有说清楚,你可能没有明白我的意思.
第一部分sql提交之后,然后执行第2部分sql才有意义.
如果第一部分sql与第2部分sql一起提交是没有意义的.但是我又想达到回滚的效果.
OracleRoob
2006-01-22
打赏
举报
回复
--在第一个例子中产生错误,但其它语句均成功执行且事务成功提交。
create table t1 (a int primary key)
go
set xact_abort off
go
begin tran
insert into t1 values (1)
insert into t1 values (1) --主键冲突,当前语句追加失败
commit tran
go
select * from t1
--结果表中有一行记录
drop table t1
go
--在第二个例子中,set xact_abort 设置为 on。这导致语句错误使批处理终止,并使事务回滚。
create table t1 (a int primary key)
go
set xact_abort on
go
begin tran
insert into t1 values (1)
insert into t1 values (1) --主键冲突,整个事务中所有语句操作回滚
commit tran
go
select * from t1
--结果表中没有记录
drop table t1
go
OracleRoob
2006-01-22
打赏
举报
回复
--当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。
set xact_abort on
--开始事务
begin tran
--第一部分SQL
--第二部分SQL
--提交事务
commit tran
return 0
事务
管理不起作用的几个原因
之前有个小测试发现
事务
不起作用,代理成功了,但
事务
就是不回滚。上网看到一片关于
事务
问题
的总汇,才发现原来是我的数据库中表的类型不对,更改后
事务
问题
就解决了,我也自己总结了一下 附:
事务
问题
总汇地址:http://jinnianshilongnian.iteye.com/blog/1850432 1、数据库表类型错误 首先确定使用的数据库表的类型,如果表的类型为MyISAM,则spin
关于Spring
事务
管理之默认
事务
间调用
问题
这里用到的
事务
配置为注解方式, 目前我们项目开发过程中使用配置文件方式, 一般为以下方式。这种方式的
事务
配置, 更容易引起
问题
。没有接受到里面抛出的异常, 方法继续执行, 执行结束后,
事务
提交。, 默认
事务
再被调用时, 如外层方法无
事务
, 自身会新启
事务
。由
事务
的传播行为我们知道, 如果将方法配置为默认
事务
。的时候检测到
事务
被标记为回滚, 与预期不符, 也就是。, 作为一个独立
事务
来执行. 由此存在一个
问题
。出现异常后它将
事务
标记为回滚。的
事务
回滚依托在异常之上, 当。, 之后再被调用的方法。
关于
事务
操作超时
问题
关于
事务
操作超时
问题
事例一:开启
事务
查询了表一,在调用一个方法这个方法里面也是查询这个表格代码会报错(执行超时已过期。完成操作之前已超时或服务器未响应。) 事例二:开启
事务
多次查询了表一,查询到第二遍就报错(执行超时已过期xxxxx) 原因这是由于在开启
事务
后,对"表一"进行查询时,会对"表一"添加锁,直到
事务
提交或报错回滚后,这个锁才能解除(锁的概念太多就不介绍了有性趣的朋友可以自己去看看) 引申:
事务
支持多用户同时操作不?上面我们讲了用户一用
事务
查询就会进行锁定,那么多用户同时查询呢?这里我...
【
事务
与并发】- 不同
事务
读取相同数据
问题
在加了
事务
的接口中,不同的业务或者是出现并发的时候,发现了一些SQL读取
问题
,两个都被
事务
包裹的方法,各自是隔离的,如果一方的
事务
延时提交,就会导致另一方读取出来的数据相同,并不是修改后的数据。
关于方法A调用方法B的
事务
控制
问题
关于方法A调用方法B的
事务
控制
问题
实测,不管是上图还是下图,得到的结论都是一致的,那就是: 前提是同一个类里的方法调用,controller层类调用service的B方法,
事务
自然会生效的 a.异常发生后,被调用方法(B)是否添加
事务
控制,对于
事务
的回滚是否并不产生影响 b.调用B的方法,添加了
事务
控制才能实现异常
事务
回滚,不管被调用方法B是否有
事务
控制 c.不管嵌套调用了多少个方法,只要最顶...
MS-SQL Server
34,837
社区成员
254,632
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章