现在又3个表 A,B,C
表A一个字段a是主键 表B有1个字段b是主键表C有3个字段 c1主键,c2,c3
我想的过程是这样的  
update A
if @@error <> ''
如果有错误就直接去insertupdate B
if @@error <> ''insert into C 如果update  A的时候 出现错误 就不执行update  B  直接去insert  C   然后退出过程
哪位大侠能帮忙解决下

解决方案 »

  1.   

    begin tran
    begin
    update A
    if @@error<0
    rollback
    else
    update B
    end
    begin
    insert into c
    end
    commit tran
      

  2.   

    还有已经回滚了
    还能执行c ?
    应该goto吧
      

  3.   

    update A set a='2' where a='3'
    update 有错误 判断如果有错 不管下面是什么语句 都不执行直接跳到insert执行insert语句执行完毕退出
      

  4.   

    --参考
    declare @i int
    set @i=0
    update ta set id=10/0
    set @i=abs(@@error)
    if @i<>0 
      insert tc select 10
    else
      update tb set id=10
      

  5.   

    update A 
    update B
    update C 
    update D
    我怎么才能在执行完update后跳到update D去执行 完毕后退出 
      

  6.   

    update A  
    update B
    update C  
    update D
    我怎么才能在执行完update后跳到update D去执行 完毕后退出 
      

  7.   


    update A   
    update B
    update C   
    update D
    我怎么才能在执行完update A后跳到update D去执行 完毕后退出 
      

  8.   

    IF NOT OBJECT_ID('[a]') IS NULL
    DROP TABLE [a]
    GO
    IF NOT OBJECT_ID('[b]') IS NULL
    DROP TABLE [b]
    GO
    IF NOT OBJECT_ID('[c]') IS NULL
    DROP TABLE [c]
    GO
    IF NOT OBJECT_ID('[d]') IS NULL
    DROP TABLE [d]
    GO
    CREATE TABLE A(A INT)
    CREATE TABLE B(A INT)
    CREATE TABLE C(A INT)
    CREATE TABLE D(A INT)INSERT A SELECT 1
    INSERT B SELECT 1
    INSERT C SELECT 1
    INSERT D SELECT 1UPDATE A SET A=A/0
    IF @@ERROR<>0
    UPDATE D SET A=2
    ELSE 
    INSERT C SELECT 2SELECT * FROM D
    /*
    A
    -----------
    2(1 行受影响)
    */参考
      

  9.   

    已经研究出来了 是这样的
    update A
    if 如果成立执行goto
     goto  Aupdate B
    update C
    update D
    上面的goto A直接跳到这里
    A:
    写需要的语句
    return  退出过程
      

  10.   

    begin try
    update A..
    update B..
    insert into C  ..
    end trybegin catch
    insert into C  ..
    end catch
    前提是b和C都不会报错