不一定,SET XACT_ABORT ON只是自动回滚事务的设置项,除此之外,还可以使用ROLLBACK TRAN语句来回滚事务。

解决方案 »

  1.   

    对,使用 
    SET XACT_ABORT ON  才能帮你自动回滚事务,这方面探究的文章比较少。我的经验是这个选项非常非常的重要。--------------------------
    http://chinadba.cn
    深圳骄子数据库服务网
    最具实战经验的数据库优化、管理、设计、培训。
      

  2.   

    可以用@@error探测最后执行的 Transact-SQL 语句的错误代码,如果有错误,rollback tran,
    没有错误的话commit tran
    例如:
    BEGIN TRAN
    INSERT INTO t2 VALUES (1)
    if @@error<>0
     begin
    rollback tran
    return
     end
    INSERT INTO t2 VALUES (2) /* Foreign key error */  
    if @@error<>0
     begin
    rollback tran
    return
     end
    INSERT INTO t2 VALUES (3)
     if @@error<>0
    rollback tran
     else
    COMMIT TRAN
      

  3.   

    如果用rllback tran 就得象楼上写得每个判断下,代码是不是太复杂了
      

  4.   

    --加:SET XACT_ABORT ON  回滚事务中的所有操作
         SET XACT_ABORT OFF 回滚事务中的部分操作(出错处)