日期:2014-05-18  浏览次数:20512 次

比较郁闷的问题,存储过程中事务的执行.
前台程序开发需要调用存储过程,为保证数据的完整性,使用了事务.具体结构如下

create proc deleteData

as

begin tran


  delete from tableA

  delete from tableb

commit tran


if @@trancount>0

rollback tran

这个存储过程本来是很简单的,并且在查询分析器中执行也是成功.但前台程序一调用

竟然会出现事务回滚的现象.使用了多种方法来处理,但还是无法解决,故请各位大侠多

多多帮忙!!

------解决方案--------------------
SQL code

--改为:

create   proc   deleteData 

as 

set xact_abort on

begin   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的时候,表示如果执行的语句中,哪句出现了错误,那么这句语句引起的数据变动将回滚.而其他不会回滚.