2017-08-08 115 views
0

所以我有一個後更新觸發器,如果​​該字段更改它將更新另一個表中的列的數據,但是,事實證明,它將更新所有行的整個列。MySQL之後更新觸發器更新所有

這個觸發條件中的 '命令' 表:

IF (NEW.status != OLD.status) THEN 
    UPDATE orderep SET status = (SELECT NEW.status FROM orders WHERE orders.orderNumber = OLD.orderNumber); 
    UPDATE order_audit SET status = (SELECT NEW.status FROM orders WHERE orderNumber = OLD.orderNumber); 
    END IF; 

任何想法?

回答

3

您在orderrep和order_audit表的UPDATE語句中缺少where子句,並且對訂單的查找似乎是多餘的。假設orderrep和order_audit參考訂單表:

IF (NEW.status != OLD.status) THEN 
UPDATE orderep SET status = NEW.status WHERE orderrep.order_id = NEW.id ; 
UPDATE order_audit SET status = NEW.status WHERE order_audit.order_id = NEW.id ; 
END IF 
+0

非常感謝!無法注意到... – Kwees