我试着用mysql做一个触发器,在更新table1后更新table2,基本上操作的逻辑就是这个:
我有一个table1,其中包含下一个字段:
idtable1 idtable2 单元
下一张表就像这样
idtable2 totalunits
所以我需要更新table2的totalunits字段,其中table1的所有单位的总和与table2的id相同,例如:
假设table1具有以下值:
idtable1 | idtable2 | units
___________________________
1 | 1 | 3
2 | 1 | 2
3 | 2 | 2
然后我的table2应该是
idtable2 | totalunits
________________________
1 | 5
2 | 2
我知道也许它非常容易,但我无法找到任何解决方案,我已经创建了一个触发器,但它无法正常工作
update `table2`,`table1` set totalunits= sum(table1.units) where table2.idtable2=table1.idtable2
答案 0 :(得分:0)
您可以使用以下查询:
UPDATE table2 t2 SET t2.`counts` = (SELECT SUM(t1 .`units`) FROM table1 t1 WHERE t1.`id2` = t2.`id2`);
答案 1 :(得分:0)
使用触发器
DELIMITER $$
CREATE TRIGGER upd_units AFTER UPDATE ON table1
FOR EACH ROW
BEGIN
SET @diff := OLD.units - NEW.units;
UPDATE table2 SET total_units = total_units - @diff WHERE idtable2 = OLD.idtable2;
END;$$
DELIMITER ;