begin tran
    /*你的语句*/
if @@error<>0
begin
    rollback tran
end
这样就可以了,相当于异常处理

解决方案 »

  1.   

    上面少了个commit tran
    最好在每条SQL语句使用,检查@@error
    然后异常处理
      

  2.   


    SET XACT_ABORT  ON 
    --当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。
      

  3.   

    2005 中
    BEGIN TRY
        -- Generate a divide-by-zero error.
        SELECT 1/0;
    END TRY
    BEGIN CATCH
        SELECT ERROR_NUMBER() AS ErrorNumber;
    END CATCH;
    GO