启用set xact_abort on或者判断@@error是否为0来提交或者回滚事务

解决方案 »

  1.   

    SQL Server 2005中可以使用try..catch
      

  2.   

    Detecting and Reporting Errors in Stored Procedures - Part 1: SQL Server 2000 
    http://www.sqljunkies.com/Article/564F5D77-2F7E-41FB-91C7-353B6D84BF94.scuk
      

  3.   

    是不是在循环中即使有异常,循环也不会停止,这里的异常指的Insert和update的操作.
    我刚才测试了一下,好象循环不会停止,我的目的就是不让循环因为异常不走了.
      

  4.   

    还是停了,怎么能让循环因为异常而不停止跳过忽略呢?
    就是一个try,catch的写法.
      

  5.   

    set xact_abort on会在发生错误时停止并回滚事务
      

  6.   

    理解错你的意思了,呵呵
    SQL Server 中默认的行为将是只回滚产生该错误的语句,而前边没有产生错误的语句将不会回滚
      

  7.   

    --创建测试环境
    create table A
    (
      ID int primary key
    )--测试
    insert A select 1
    insert A select 2
    insert A select 3
    insert A select 4
    insert A select 1  --主键重复,发生错误,但其他语句仍然被执行
    insert A select 5--查询
    select * from A--删除测试环境
    drop table A--结果
    /*
    ID          
    ----------- 
    1.00
    2.00
    3.00
    4.00
    5.00(所影响的行数为 5 行)
    */