Mysql插入触发器失败后

时间:2017-12-05 07:01:14

标签: mysql triggers

我正在尝试使用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

1 个答案:

答案 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。