在MySQL中:


我有一个interview表,并且
创建新的采访(在interview中插入一行)后,
我想向子表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之后强调了visitor_question_template。

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

最佳答案

你还好只需将整个内容包装在定界符块中即可。以下内容可以解决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

08-08 05:36