根据我在这里找到的上一篇文章,当第一个表的状态发生变化时,我无法将值插入第二个表,但是它一直在不加选择地添加,我需要检查一下commit_id是否已经插入到第二个表中,然后更新字段没有插入它的增益,我将如何执行触发器之前执行检查?因为new.status和old.status引用的是正在编辑的行,而不是它要插入的表上的行,所以我该如何进行比较并插入或更新(如果已存在),谢谢
您可以INSERT INTO ... ON DUPLICATE KEY UPDATE
为此使用语法
如果要使其正常工作,则必须对第二个表中的列进行UNIQUE
约束submitId
(将其称为students
)。
ALTER TABLE students ADD UNIQUE (submitId);
现在是触发器的改进版本
DELIMITER $$
CREATE TRIGGER tg_au_submissions
AFTER UPDATE ON submissions
FOR EACH ROW
BEGIN
IF NEW.status = 1 THEN
INSERT INTO students (submitId, studentName, submitDate, contacts, email)
VALUES (NEW.submitId, NEW.studentName, NEW.submitDate, NEW.contacts, NEW.email)
ON DUPLICATE KEY UPDATE
studentName = VALUES(studentName),
submitDate = VALUES(submitDate),
contacts = VALUES(contacts),
email = VALUES(email);
END IF;
END$$
DELIMITER ;
这是SQLFiddle演示
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句