首页 新闻 搜索 专区 学院

不同的两个事务同时回滚

0
悬赏园豆:100 [待解决问题]

我现在做的项目有两个不同事务的方法,先添加后删除,如果添加删除失败了就回滚不了了,怎么能让这两个事务一个失败两个都能回滚呢。

小龙@的主页 小龙@ | 初学一级 | 园豆:106
提问于:2013-11-23 18:21
< >
分享
所有回答(8)
0

写成一个事务

x.y. | 园豆:226 (菜鸟二级) | 2013-11-23 18:36

怎么写成一个事务呢,你说的具体一些吗?

 

支持(0) 反对(0) 小龙@ | 园豆:106 (初学一级) | 2013-11-23 18:38
2

将两个事务中内容,放到一个事务中,在事务中定义一个临时变量接收全局变量@@ERROR ,通过判断临时变量如果大于0,就回滚,否则就提交呗!

--事务允许你定义一个操作单元,要么全部成功,要么全部失败

--开启事务

begin tran

declare @error int =0 --声明一个局部变量 接收全局@@error

set @error=@error+@@ERROR

update  TblScore set tEnglish=59 where tScoreId=12  --写你两个事务,要执行内容

set @error=@error+@@ERROR

if(@error>0)

begin

rollback tran;

print 'update failed'

end

else

begin

commit tran;

print 'success'

end
秋壶冰月 | 园豆:5450 (大侠五级) | 2013-11-23 19:20
0

把两个事务放到一个里面

建议不要使用SQL,而是使用编程语言在做此事,毕竟数据库写业务逻辑并不是很合适

谦行 | 园豆:473 (菜鸟二级) | 2013-11-23 19:57
0

如果是java,把这两个操作放到同一个servier里面,然后加spring的事务控制。

angelshelter | 园豆:9676 (大侠五级) | 2013-11-23 20:45
0

把添加方法与删除方法加到一个事务中,本来也只要用一个事务就可以搞定了,

using(var scope = new Transaction)

{

try

{

  //添加方法

     //删除方法

     scope.commit()

}

catch()

{

}

}

在一个事务中无论哪个操作失败都会回滚之前的操作,这样就O了

Zery | 园豆:6069 (大侠五级) | 2013-11-24 00:05
0

写成一个事务 就行了

Albert Fei | 园豆:2102 (老鸟四级) | 2013-11-25 11:13
0

要使用事务,可以写存储过程,也可以对DAL层写事物(用try catch)建议用try catch 这样程序的扩展性稍微好点

唯我独萌 | 园豆:532 (小虾三级) | 2013-11-26 00:32
0

写到一个事务中就好了,如果只执行一个语句,是不需要用事务的

魔多 | 园豆:1031 (小虾三级) | 2013-12-12 09:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册