sql server 触发器 取值更新行问题

输入数量行,点保存,更新 变更前数量为1,2,3 (过程就是为了显示上一次原来的数量)   

触发器代码:

alter trigger [dbo].[PO_Podetails_silent]
on [dbo].[PO_Podetails]
after update
as 

begin
if update(iQuantity)
 declare @gxqsl nvarchar(50)
 set @gxqsl=(select  iQuantity from Deleted )

update PO_Podetails
set cDefine25=@gxqsl 
from inserted a join PO_Podetails b on a.cInvCode=b.cInvCode 
end

  在更新时会前端会返回错误,我觉得是 取值返回了多个值了,但不知道如何解决,望大神指教。

其实首先要弄明白,你想在每次更新的时候是只记录更新那一行之前的数据,还是所有行都update成那个数据。

按我的理解,你是想update哪一行,就记录哪一行变更前的数量吧?

set @gxqsl=(select  iQuantity from Deleted ) 这个就是这行变更前的数量,试试把下面的update语句改成

update PO_Podetails
set cDefine25=a.iQuantity 
from Deleted a join PO_Podetails b on a.cInvCode=b.cInvCode 

如果还不行,把你前面的after  改成for试试。