解决方案 »

  1.   

    最前面写上 SET XACT_ABORT ON
      

  2.   

    commit改成rollback就回滚了,不过即使成功也回滚,所以加try/catch比较好
      

  3.   

    begin tran 
    begin try 
    insert into dept(id,name_dept) values(1,'部门1')insert into dept(name_dept) values('部门2') -- id不能为空
    insert into dept(id,name_dept) values(3,'部门3')
    commit
    end try
    begin catch
    rollback
    end catch
      

  4.   

    begin try
    begin traninsert into dept(id,name_dept) values(1,'部门1')
    insert into dept(name_dept) values('部门2') -- id不能为空
    insert into dept(id,name_dept) values(3,'部门3')commit tran
    end try
    begin catch
     rollback tran  print 'Error Message: '+ERROR_MESSAGE()
     print ERROR_LINE()
     print Error_Number()
    end catch
      

  5.   

    貌似不行我用的是sqlserver2000 不支持try catch
      

  6.   

    我用的sqlserver2000 不支持try/catch
      

  7.   

    那你看用的什么语言了,C#语言是有事务的处理类,可以构建事务,批量向数据库插入数据,可以用try/catch捕捉异常进行回滚。
      

  8.   


    貌似不对啊和不加的效果一样2000不知道有没有XACT_ABORT,如果加了,一旦出错会整个事务回滚
      

  9.   

    XACT_ABORT不会回滚自定义异常,抛自定义异常的时候最好有
    IF @@Trancount>0
    ROLLBACK TRANSACTION