Mysql After insert 触发器失败

标签 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 - 您的 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/

相关文章:

php - SQL不可能有LIKE语句?

PHP - PDO 参数编号无效

wpf - 触发器不更新

database - 查询在触发后没有结果数据的目的地

mysql - SIGNAL SQLSTATE '45000' 不停止插入

PHP mySQL 问题

php - 我的 php 购物车更新按钮无法正常工作?

php - 跨网页布局的多个 MySQL 查询 - 最好的方法是什么?

Python Tkinter : textfield enter command

MySQL 触发器 - 使用额外值更新关系表