我的MySQL触发器有问题。
我有一张员工表,里面有一些基本信息。然后我有一个视图,我们称之为财务系统。财务系统视图保存了来自许多来源的大量信息。finance_system中的一些列与内部销售抽奖有关,每次查询finance_systemVIEW时都会从其他表中返回随机值。最后,我有一张名为EP1的表格。它的工作是保存finance_system中的一些数据,特别是一些具有随机值的列。这样可以防止它们随每个查询更新/更改。EP1表通过触发器进行更新,触发器向employees表中的某些列触发AFTER AN UPDATE。触发器工作,EP1表得到更新,但它更新的是整个表,而不是与更新的employee_id相关联的行。
在发布之前,我阅读了Stacks的政策,并理解有必要提供一个可复制的示例,所以我创建了一个Fiddle,但我混淆了数据,只包含了几列。希望这已经足够了,因为我已经耗尽了谷歌的精力,试图弄清楚为什么它不起作用。
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=942巴180df86b7ac9317bbcdd64b
编辑:
更简单的版本:更新Table1.status时,触发器应使用ID匹配的Table2.rand1中的值更新Table3.rand1。每个ID在表2和表3中有两行。我目前的问题是,当触发器触发时,它会更新表3中的所有行,而我希望它只更新与表1中更新的ID相关联的行。联接在这种情况下不起作用,因为表2实际上是在我的真实数据中使用rand((的VIEW。
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=329e2dd3bf2f39afc5388721c53ddc
Aimee
检查触发器的UPDATE查询:它缺少WHERE
子句,因此Table3
的所有行都会更新,而不是与所需id
匹配的行。