我正在尝试使用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 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':NEW.user_id
。
我尝试了不同的东西,但我无法让它发挥作用。如果有人能帮助我完成这项工作,我会很乐于助人。
在此我试图填充* mega_score_genre *表,只要插入 purchase_master 表&从package_master表中获取test_id,其中package_master.package_id = purchase_master.package_id
答案 0 :(得分:0)
https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
在触发器主体中,OLD和NEW关键字使您可以访问受触发器影响的行中的列。 OLD和NEW是触发器的MySQL扩展;它们不区分大小写。
NEW
,而不是:NEW
。
出于好奇,你从什么样的例子或参考文献中得到了拼写它:NEW
的想法?
第二个问题:SELECT中只有一个表。你没有加入JOIN,所以你不能有一个ON子句。在这里阅读SELECT的语法:https://dev.mysql.com/doc/refman/5.7/en/join.html
如果要根据条件选择某些行,该示例应使用WHERE而不是ON。