我现在做的项目有两个不同事务的方法,先添加后删除,如果添加删除失败了就回滚不了了,怎么能让这两个事务一个失败两个都能回滚呢。
写成一个事务
怎么写成一个事务呢,你说的具体一些吗?
将两个事务中内容,放到一个事务中,在事务中定义一个临时变量接收全局变量@@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
把两个事务放到一个里面
建议不要使用SQL,而是使用编程语言在做此事,毕竟数据库写业务逻辑并不是很合适
如果是java,把这两个操作放到同一个servier里面,然后加spring的事务控制。
把添加方法与删除方法加到一个事务中,本来也只要用一个事务就可以搞定了,
using(var scope = new Transaction)
{
try
{
//添加方法
//删除方法
scope.commit()
}
catch()
{
}
}
在一个事务中无论哪个操作失败都会回滚之前的操作,这样就O了
写成一个事务 就行了
要使用事务,可以写存储过程,也可以对DAL层写事物(用try catch)建议用try catch 这样程序的扩展性稍微好点
写到一个事务中就好了,如果只执行一个语句,是不需要用事务的