我有一个TEMP表,当通过网站显示表时,使用存储过程提供数据。这非常有效。我将此表作为可编辑的表,以便在编辑此表中的数据时,它将更新的数据发送回我的TEMP表,再次按此更新。我现在有一个触发器,它将从TEMP获取某些字段并更新我的LIVE db表。
我的问题是,当我根据UPDATED添加其他字段进行更新时,它将对TEMP表中的每一行执行更新。我尝试了各种方法,下面是我最后一次尝试更新该特定行。
CREATE
DEFINER = 'user'@'%'
TRIGGER update_epcplanneddate
AFTER UPDATE
ON ims.temp_tobebooked
FOR EACH ROW
BEGIN
UPDATE epc_planning p
INNER JOIN temp_tobebooked b ON b.PropID = p.PropID
SET
p.EPCStatus = CASE WHEN p.PropID = b.PropID THEN 3 END,
p.EPCPlannedDate = b.EPCPlannedDate,
p.EPCBookingDate = CASE WHEN p.PropID = b.PropID THEN NOW() END,
p.LastUpdateDate = CASE WHEN p.PropID = b.PropID THEN NOW() END,
p.LastUpdateUser = b.InputBy
WHERE p.PropID = b.PropID;
END
如何更新我需要更新的内容以及基于此更新的额外字段?
答案 0 :(得分:0)
所以将JOIN改为使用NEW.column现在看起来像这个
CREATE
DEFINER = 'user'@'%'
TRIGGER update_epcplanneddate
AFTER UPDATE
ON temp_tobebooked
FOR EACH ROW
BEGIN
UPDATE epc_planning p
SET
p.EPCStatus = 3,
p.EPCPlannedDate = NEW.EPCPlannedDate,
p.EPCBookingDate = NOW(),
p.LastUpdateDate = NOW(),
p.LastUpdateUser = NEW.InputBy
WHERE p.PropID = NEW.PropID;
END