【问题标题】:MySQL AFTER INSERT Trigger - select INTO using NEW values not workingMySQL AFTER INSERT 触发器 - 使用新值选择 INTO 不起作用
【发布时间】:2015-12-02 18:58:03
【问题描述】:

在 MySQL 中:

  1. 我有一个interview 表,并且
  2. 创建新采访时(在interview 中插入一行),
  3. 我想将行添加到子表interview_questions 链接到interview_questions_template 中的问题定义的表。

我正在尝试在interview 的 AFTER INSERT 触发器中执行此操作,而 mysql 说我在 INSERT INTO ... SELECT 语句的末尾有语法错误。

我尝试过加入 NEW,以为它可能是一张桌子,但这也没有用。看看代码?

CREATE TRIGGER interview_AFTER_INSERT AFTER INSERT ON interview 
FOR EACH ROW
BEGIN
  INSERT INTO interview_questions (id_interview, id_candidate, id_question_def,  s_userid)
    SELECT NEW.id_interview, NEW.id_candidate, interview_question_template.id_question_def, NEW.s_userid 
        FROM interview_question_template;

END

mysqlworkbench 显示的错误是“缺少'分号'”,在 FROM 后面加下划线的 interview_question_template。

执行错误说' '之后的那一行有错误。

【问题讨论】:

    标签: mysql triggers insert-into


    【解决方案1】:

    你做得很好。只需将整个内容包装在分隔符块中即可。以下内容在 1064 错误中幸存下来。

    DELIMITER $$
    CREATE TRIGGER interview_AFTER_INSERT AFTER INSERT ON interview 
    FOR EACH ROW
    BEGIN
      INSERT INTO interview_questions (id_interview, id_candidate, id_question_def,  s_userid)
        SELECT NEW.id_interview, NEW.id_candidate, interview_question_template.id_question_def, NEW.s_userid 
            FROM interview_question_template;
    
    END
    $$
    DELIMITER ;
    

    至于Delimiters的重要性,见我的This Post底部。我在别处写得更雄辩,只是找不到参考。 mysql 手册几乎没有任何关于普通人的冗长内容。

    我很抱歉发布明显的内容。有时人们只需要看到它:P

    【讨论】:

    • 做到了! 谢谢!
    【解决方案2】:

    我做的另一件事是简单地删除 BEGIN/END,它也很有效。

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 2017-04-10
      • 2013-03-09
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 2019-11-22
      • 2017-10-04
      • 1970-01-01
      相关资源
      最近更新 更多