使用Trigger在MySQL中更新table1之后更新table2

时间:2014-09-17 08:02:58

标签: mysql triggers

我试着用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  

2 个答案:

答案 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 ;