CREATE TRIGGER TR_UpdateFPH ON zhangbuzz
FOR  UPDATE
ASupdate b set 凭证编号=a.fph from inserted a,equipment b 
where b.code=a.code and b.rkdh=a.rkdhupdate b set fph=a.fph from inserted a,rkdjMark b 
where b.code=a.code and b.rkdh=a.rkdhupdate b set fph=a.fph from inserted a,device_in1 b 
where b.code=a.code and b.rkdh=a.rkdhgo

解决方案 »

  1.   

    1. 把你的操作放进事务中
    2。为表设置主键
    3。多条记录同时插入应修改你的存储过程:
       CREATE TRIGGER TR_UpdateFPH ON zhangbuzz
       FOR  UPDATE
       AS
       SET XACT_ABORT ON
       BEGIN TRAN
       UPDATE b SET 凭证编号=a.fph 
       FROM inserted a,equipment b 
       WHERE b.code=a.code and b.rkdh=a.rkdh   UPDATE b SET fph=a.fph 
       FROM inserted a,rkdjMark b 
       WHERE b.code=a.code and b.rkdh=a.rkdh   UPDATE b SET fph=a.fph 
       FROM inserted a,device_in1 b 
       WHERE b.code=a.code and b.rkdh=a.rkdh   COMMIT TRAN
       go
      

  2.   

    错误处在这儿  select @rkdh=rkdh,@code=code,@fph=fph from inserted  ,这样的用法
    不管inserted有多少只会返回一个值。和事务没有关系。
    你要把表用联接的方式处理 ,改称下面的应该就OK了CREATE TRIGGER TR_UpdateFPH ON zhangbuzz
    FOR  UPDATE
    ASupdate b set 凭证编号=a.fph from inserted a,equipment b 
    where b.code=a.code and b.rkdh=a.rkdhupdate b set fph=a.fph from inserted a,rkdjMark b 
    where b.code=a.code and b.rkdh=a.rkdhupdate b set fph=a.fph from inserted a,device_in1 b 
    where b.code=a.code and b.rkdh=a.rkdh
      

  3.   

    谢谢大家!我的表是有主键的,情况和iwl()说的一样,可能iwl()说对了.
      

  4.   

    wgsasd311(自强不息)大侠:一开始你就对了,佩服并谢谢你!我已经测试成功了.