我有个存储过程,如下
......
begin tran
update t1 with(rowlock) set ....
update t2 with(rowlock) set...
update t3 with(rowlock) set...
update t4 with(rowlock) set...
commit tran
.............
我想问下如果在事务中有部分语句执行了,那么事务会自动回滚么? 如果不能自动回滚,那如何判断,进行回滚呢?如果不是语句错误,而是并发执行导致不能update,那么如何进行回滚呢?
......
begin tran
update t1 with(rowlock) set ....
update t2 with(rowlock) set...
update t3 with(rowlock) set...
update t4 with(rowlock) set...
commit tran
.............
我想问下如果在事务中有部分语句执行了,那么事务会自动回滚么? 如果不能自动回滚,那如何判断,进行回滚呢?如果不是语句错误,而是并发执行导致不能update,那么如何进行回滚呢?
update t1 with(rowlock) set ....
update t2 with(rowlock) set...
update t3 with(rowlock) set...
update t4 with(rowlock) set...
IF @@error = 0
commit tran
else
rollback tran
end
update t1 with(rowlock) set ....
update t2 with(rowlock) set...
update t3 with(rowlock) set...
update t4 with(rowlock) set...
IF @@error = 0
commit tran
else
rollback tran
如果我部分语句没执行,而不是因为update语句出错,这样上面的方法可以用么?
如我所写,如果部分语句失败,那我不做判断
(IF @@error = 0
commit tran
else
rollback tran)我的语句也会自动回滚的对吧?请高手指教,谢谢!