我有两个表,Entries和mountPanels。我想做的是将一条记录插入到mountPanels中时,通过插入记录的ID汇总该表中的面板,并使用该总和(匹配相同的ID)更新Entries表。

当我尝试下面的AFTER INSERT触发器时:

UPDATE Entries SET panels = (SELECT SUM(panels) FROM mountPanels WHERE Entries.EntryID = new.EntryID)


它总结了一切,但是当我尝试

UPDATE Entries SET panels = (SELECT SUM(panels) FROM mountPanels WHERE Entries.EntryID = mountPanels.EntryID)


它会按ID正确汇总所有内容,但会更新每一行。我只希望它使用最后输入的ID更新特定行。

最佳答案

您的update语句没有where子句,因此当然会更新每一行。另外,您的陈述似乎没有正确使用new

尝试这个:

UPDATE Entries SET
panels = (
    SELECT SUM(panels)
    FROM mountPanels
    WHERE EntryID = new.EntryID)
WHERE EntryID = new.EntryID

关于mysql - 插入触发器后,使用mySql,按ID汇总一个值并更新另一个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28522773/

10-08 21:38