CREATE trigger UT_StoreItemDelete
on StoreItem
for Delete
as
begin
  declare
    @id int,
    @IMEI varchar(15)     select @IMEI =(select IMEI from deleted)
     select top 1 @id=id from product where IMEI=@IMEI and status<>0 order by id desc
     update Product set Status=SaveStatus,SaveStatus=Status where id=@id
end
--------------------
这是我编的触发器,一次删除多条没问题,但是删除多条就有问题。

解决方案 »

  1.   

    CREATE trigger UT_StoreItemDelete
    on StoreItem
    for Delete
    as
    update Product 
    set Status=SaveStatus
        ,SaveStatus=Status 
    from Product A
    join deleted D on D.IMEI=A.IMEI
    where A.id =(select top 1 id 
                    from product 
                       where IMEI=D.IMEI 
                              and status<>0 
                                  order by id desc)
      

  2.   

    搂主的当然有问题,select @IMEI =(select IMEI from deleted),一条时没有问题,多条时,就被赋值为第一条了,剩下的没有定义,所以楼主的不可以删除多条数据!
      

  3.   

    我太菜不能理解vivianfdlpw()的写法!
      

  4.   

    用vivianfdlpw() 的方法吧select @IMEI =(select IMEI from deleted), 这样的赋值方式相当于select top 1  IMEI from deleted 所以多条时会有问题如果用联接就可以解决这个问题。就象vivianfdlpw()他的写法,很标准。