2015-12-02 50 views
0

在MySQL的新的價值觀:MySQL後,INSERT觸發器 - SELECT INTO使用不工作

  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。

執行錯誤說在''後面的那一行有錯誤。

回答

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

+0

這樣做! **謝謝!** –

0

我做的另一件事是簡單地刪除BEGIN/END,它也像魅力一樣工作。