不能这样写:
select @Us_sentuser = w_senter from inserted
当INSERTED中有两条以上记录存在时,就会出错。

解决方案 »

  1.   

    用游标来处理INSERTED中的数据
      

  2.   

    CREATE TRIGGER update_work  ON dbo.sentwork
    FOR UPDATE
    AS
    DECLARE @Us_sentuser char(10) , 
        @Us_sentno  char(7) , 
        @Us_gmccno char(6),
        @Us_state char(8)
    DECLARE INS_CURSOR CURSOR FOR
    SELECT W_SENTER,W_WNO,substring(w_tno,2,7),W_STATE,FROM INSERTED 
    OPEN INS_CURSOR
    FETCH NEXT FROM INS_CURSOR INTO 
    @Us_sentuser char(10) ,@Us_sentno  char(7) , @Us_gmccno char(6),@Us_state char(8)
    WHILE @@FETCH_STATUS=0
    BEGIN
            
            select @Us_sentuser = w_senter
                   @Us_sentno   = w_tno     
                   @Us_gmccno = substring(w_tno,2,7) 
                    @Us_state   = w_state  from inserted WHERE CURRENT OF INS_CURSOR
            IF @Us_sentuser <> ' '  or  @Us_sentuser is not null
    Begin       IF   substring(@Us_sentno,1,1 ) = 'A'
    Begin       update Gmcccard.dbo.sentgmcc 
                 set state = @Us_state  ,  user_sent = w_senter 
                  from inserted
                       where tno = @Us_gmccno
             END
     END
    END