mySql插入触发器后,按ID求和一个值并更新另一个表

标签 mysql triggers

我有两个表,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 更新特定行。

最佳答案

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

试试这个:

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

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

相关文章:

mysql - 当像 : "in (23,24,22,23)" 这样的 where 条件时,如何避免查询结果被覆盖

wpf - 使用动画制作 WPF 标签(或其他元素)闪光

java - Oracle 一对多引用触发器

sql - Oracle:在触发器中使用子查询

mysql - 如何使用 INSERT INTO 查询一次插入多行

php - 检索之前选择的下拉主题值

mysql - 如何从 mysql 表中删除重复行

mysql8.0.22设置默认值DATE_FORMAT(sysdate() ,'%Y%m%d' )错误

mysql - Spring Boot 连接 MySQL 远程数据库

hibernate - 使用 PostgreSQL 触发器和 hibernate 时出现意外的行计数