我正在尝试 mysql 触发器。这是我第一次
DROP TRIGGER IF EXISTS `mega_insert`;
delimiter |
CREATE TRIGGER mega_insert AFTER INSERT ON purchase_master
FOR EACH ROW
BEGIN
INSERT INTO mega_score_genre (test_id,user_id,package_id)
SELECT p.test_id
,:NEW.user_id
,:NEW.package_id
FROM package_master p
ON p.package_id = :NEW.package_id;
END;
|
delimiter ;
它不工作#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 ':NEW.user_id
附近使用的正确语法。
我尝试了不同的方法,但无法使其正常工作。如果有人可以帮助我完成这项工作,我会提供帮助。
在此,每当将某些内容插入到 purchase_master 表中时,我都会尝试填充 * mega_score_genre* 表并从 package_master 表中获取 test_id,其中 package_master.package_id = buy_master.package_id
最佳答案
https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
Within the trigger body, the OLD and NEW keywords enable you to access columns in the rows affected by a trigger. OLD and NEW are MySQL extensions to triggers; they are not case sensitive.
NEW
,而不是:NEW
。
出于好奇,您从什么示例或引用中得知应该将其拼写为 :NEW
?
第二个问题:您的 SELECT 中只有一张表。您没有执行 JOIN,因此不能有 ON 子句。在这里阅读有关 SELECT 语法的信息:https://dev.mysql.com/doc/refman/5.7/en/join.html
如果示例想要根据条件选择某些行,则应使用 WHERE 而不是 ON。
关于Mysql After insert 触发器失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47647855/