MySQL AFTER INSERT触发器 - 使用NEW值不工作选择INTO

时间:2015-12-02 18:58:03

标签: mysql triggers insert-into

在MySQL中:

  1. 我有一个interview表格和
  2. 创建新面试时(插入interview行),
  3. 我想将行添加到子表interview_questions表,链接到interview_questions_template中的问题定义。
  4. 我试图在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。

    执行错误表示'之后该行有错误。 '

2 个答案:

答案 0 :(得分: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 ;

至于分隔符的重要性,请参阅我This Post的底部。我在其他地方更有说服力地写了它,但却无法找到它的参考。对于普通人而言,mysql手册几乎没有任何详细信息。

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

答案 1 :(得分:0)

我做的另一件事就是简单地删除BEGIN / END,它也像魅力一样。