MSDN上说,“如果某个错误使事务无法成功完成,SQL Server 会自动回滚该事务,并释放该事务占用的所有资源”。
就是说,一般情况下,不用在出错后手动写 ROLLBACK TRANSACTION ?像下面这样写对吗?
BEGIN TRY
BEGIN TRANSACTION;
-- ...
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
RETURN -1;
END CATCH;

解决方案 »

  1.   


    你CATCH了,就不是一般的写法
      

  2.   

    就是说,一般情况下,不用在出错后手动写 ROLLBACK TRANSACTION ?
    是的 事务有自动回滚机制
      

  3.   

    当 SET XACT_ABORT 为 ON 时,如果执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚。 当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。