BEGIN TRAN
   insert into DB_B.dbo.Table1 select * from  DB_A.dbo.Table1 where age>30IF @@error<>0
Rollback tran  delete from DB_A.dbo.Table1 where age>30
COMMIT TRAN

解决方案 »

  1.   

    BEGIN TRAN
    INSERT DB_B.dbo.Table1 SELECT * FROM DB_A.dbo.Table1 WHERE age > 30
    IF @@error <> 0  ROLLBACK DELETE DB_A.dbo.Table1 WHERE age > 30
    IF @@error <> 0  ROLLBACK 
    ELSE COMMIT
      

  2.   

    SET XACT_ABORT  ON
    GO
    BEGIN TRAN
       insert into DB_B.dbo.Table1 select * from  DB_A.dbo.Table1 where age>30   delete from DB_A.dbo.Table1 where age>30
    COMMIT TRAN
    GO用当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_ABORT 的影响。