比较郁闷的问题,存储过程中事务的执行.
前台程序开发需要调用存储过程,为保证数据的完整性,使用了事务.具体结构如下
create proc deleteData
as
begin tran
delete from tableA
delete from tableb
commit tran
if @@trancount>0
rollback tran
这个存储过程本来是很简单的,并且在查询分析器中执行也是成功.但前台程序一调用
竟然会出现事务回滚的现象.使用了多种方法来处理,但还是无法解决,故请各位大侠多
多多帮忙!!
[解决办法]
--改为:create proc deleteData as set xact_abort onbegin tran delete from tableA delete from tableb commit tran return 0
[解决办法]
set xact_abort on
------------
这个是什么意思?楼上的大虾
[解决办法]
当 SET XACT_ABORT 为 ON 时,如果执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚。
[解决办法]
SET XACT_ABORT 为ON 的时候,表示如果出现错误的话,那么整个包裹在事务中的执行语句将自动回滚.
如果设置为OFF的时候,表示如果执行的语句中,哪句出现了错误,那么这句语句引起的数据变动将回滚.而其他不会回滚.