begin tran
  insert into t1 (clbm) values ('0')
  insert into t2 (clbm) values ('0')
  insert into t3 (clbm) values ('0')
  insert into t4 (clbm) values ('0')
commit tran

解决方案 »

  1.   

    SQL语句执行后有一个返回结果,再查询分析器可看到.也可以跟据这个结果是否为1 决定是否执行下一条语句,否则就回滚事务,不用等全部执行.问题是请问大力:如何在存储过程里得到这个结果.
      

  2.   

    上面的sql会自动判断是否出错,出错全部回滚如果你要自己写:
    begin tran
      insert into t1 (clbm) values ('0')
      if @@error<>0 goto error
      insert into t2 (clbm) values ('0')
      if @@error<>0 goto error
      insert into t3 (clbm) values ('0')
      if @@error<>0 goto error
      insert into t4 (clbm) values ('0')
      if @@error<>0 goto error
    commit tran
    returnerror:
      rollback tran
      print '错了!'+@@error
      

  3.   

    如果 insert into t(a,b) select c,d from t1 where .....要确定 insert 到t 只有一条记录,而 select 时 where 又不能确定只返回一条记录,就需要我说的做法.请问如何确定 insert into t 是有多少条记录被响影."(所影响的行数为 1 行)"中的1
      

  4.   

    @@ROWCOUNT
    返回受上一语句影响的行数。语法
    @@ROWCOUNT返回类型
    integer注释
    任何不返回行的语句将这一变量设置为 0 ,如 IF 语句。示例
    下面的示例执行 UPDATE 语句并用 @@ROWCOUNT 来检测是否有发生更改的行。UPDATE authors SET au_lname = 'Jones'
    WHERE au_id = '999-888-7777'
    IF @@ROWCOUNT = 0
       print 'Warning: No rows were updated'
      

  5.   

    不行啊,樓上的兄弟,begin tran
    --添加新記錄到storage
    insert into storage (clbm,kc,kcHK,yprl,kyl) values (@clbm,@cskc,0,0,@cskc)--添加新記錄到priceAsk
    insert into PRICEASK (materialID,lastprice,prePrice,prcDate,lastTradeDate) values 
    (@clbm,'0','1000000002222222222222255555',getDate(),getDate())
    commit tran以上的第二條語句確定是會出錯的,但是在執行時,第一條記錄就自動被添加到DB中,接著才出現了第二條語句的執行錯誤,請問怎麼回事啊?