当前位置: 代码迷 >> PB >> 修改第一行資料的is_default列以後,觸發器inserted 取到的卻是最後一行的數據,誰能指點小弟我一下嗎
  详细解决方案

修改第一行資料的is_default列以後,觸發器inserted 取到的卻是最後一行的數據,誰能指點小弟我一下嗎

热度:65   发布时间:2016-04-29 08:33:37.0
修改第一行資料的is_default列以後,觸發器inserted 取到的卻是最後一行的數據,誰能指點我一下嗎?
CREATE TRIGGER tg_upd_of_approve ON [dbo].[of_approve] 
FOR UPDATE 
AS set nocount on

if update(is_default)
begin
update order_fabric 
set 
f_id = ins.ofapp_id, 
status_id = 34, 
approver = ins.approver, 
approved_date = ins.approved_date 
from order_fabric ofb, inserted ins
where ofb.of_id = ins.of_id
end

修改第一行資料的is_default列以後,觸發器inserted 取到的卻是最後一行的數據,誰能指點我一下嗎?


------解决方案--------------------
既然是更新操作 ,吧 inserted 换成 deleted试试
------解决方案--------------------
檢查代碼中,是否存在修改第一行數據的時候,修改了最後一行數據的操作。
不管修改了前面哪一行數據,update觸發器執行了最後一行修改,將前面觸發器的修改結果覆蓋。
update觸發器從第一行執行到最後一行,每次更新一行,所以select count返回1。