在存储过程中同时插入两个表,如何在存储过程中写一个事务处理呢?当任一个表不能插入成功,则回滚。
请高手指点:
我知道:BEGIN TRANSACTION abc
                insert table1 ...
                insert table 2...
       COMMIT TRANSACTION
但处理失败后的回滚,怎么写呢?

解决方案 »

  1.   

    try
        insert db1
        insert db2
    catch
        throw e
        rollback
      

  2.   

    set xact_abort on
    BEGIN TRANSACTION abc
                    insert table1 ...
                    if @@error>0
                        ROLLBACK TRANSACTION
                    insert table 2...
                    if @@error>0
                        ROLLBACK TRANSACTION
           COMMIT TRANSACTION
      

  3.   

    if @@error>0
                        ROLLBACK TRANSACTION