首页 > 解决方案 > MySQL 使用触发器基于另一个表更新列

问题描述

我目前有这个 mySQL 代码...

DELIMITER $$
CREATE TRIGGER after_ChairData_update 
    AFTER UPDATE ON ChairData
    FOR EACH ROW 
BEGIN

SELECT * FROM ProductionTimes as PT;
UPDATE ChairData SET Labour=`PT.Cut`+`PT.Sew`+`PT.UPH`+`PT.QC/Pack`;

END$$
DELIMITER ;

...但我在 phyMyAdmin 中收到此错误...

#1415 - 不允许从触发器返回结果集

我以前从未使用过触发器,所以我不确定如何正确执行此操作。

标签: mysql

解决方案


在评论和一些谷歌搜索的帮助下,我想出了这个解决方案......

DELIMITER $$
CREATE TRIGGER after_ProductionTimes_update 
    AFTER UPDATE ON ProductionTimes
    FOR EACH ROW 
BEGIN

UPDATE ChairData SET Labour=NEW.Cut+New.Sew+NEW.UPH+NEW.`QC/Pack` WHERE `Style`=NEW.Style;

END$$
DELIMITER ;

我不知道的是,您可以使用 NEW 来引用刚刚更新的记录中的值。无需尝试从数据库中“选择”...只需更新另一个表。


推荐阅读