gpt4 book ai didi

mysql - 在 sql 触发器中设置和比较变量的正确方法是什么

转载 作者:行者123 更新时间:2023-11-30 22:18:35 25 4
gpt4 key购买 nike

在另一个表上发生插入事件并且工作正常后,我使用触发器填充表。但是我随后注意到触发器仍会为现有记录插入一个新行。为了解决这个问题,我想再次创建触发器,但这次它只会在满足条件时触发......但过去没有使用过触发器会出现语法错误并且无法识别做错了什么。请看看并帮助我解决这个问题

CREATE TRIGGER `students_gen_insert` 
AFTER INSERT ON `students` FOR EACH ROW
BEGIN
INSERT INTO records (student_id, subject_id)
SELECT new.student_id, subjects.subject_id
FROM subjects
WHERE category = new.class;
END;

我目前使用的是 MySql 5.6.17 版本。

最佳答案

从触发器所在的表中选择通常不是一个好主意,并且禁止更新或插入(不是你正在做的)。假设您正在尝试获取刚刚插入的行的值,那么您拥有的第一个 SET ... SELECT 是不必要的;只需使用 NEW.fieldname 即可获取插入行的字段。

第二个 SET ... SELECT 和后面的条件有点令人困惑。如果保持参照完整性,我认为记录表不可能在执行触发器时引用学生表的特定 student_id。也许这是为了避免从触发器的先前代码中重复插入?如果是这样,您发布它可能会有所帮助,这样我们就可以查明冗余插入的实际来源。

关于mysql - 在 sql 触发器中设置和比较变量的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37395289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com