2015-12-24 147 views
-1

我想在創建觸發器的MySQL用下面的代碼:聲明錯誤

CREATE TRIGGER t_b_l_tuteur 
BEFORE INSERT ON tuteur FOR EACH ROW 
BEGIN 
    DECLARE code_err_tut integer; 
    DECLARE nb integer :=0; 
    DECLARE vliberlleErr MSG_ERREUR.libelleErr%TYPE; 

    SELECT libelleErr INTO vlibellErr FROM MSG_ERREUR WHERE codeErr=code_err_tut; 
    SELECT COUNT(*) INTO nb FROM ETUDIANT e WHERE :NEW.idUser = e.idUser; 

    if(nb<>0) then 
     RAISE_APPLICATION_ERROR(CODE_ERR_TUTEUR, vlibelleErr); 
    end if; 

END 

我也得到一個SQL錯誤說:

1064 - 你必須你的SQL語法錯誤;檢查 對應於你的MySQL服務器版本正確的語法使用 「」附近的4號線「

4號線是:」手動DECLARE code_err_tut整數;

我該如何解決?

+0

請張貼它的代碼,而不是屏幕截圖。 – user7

+0

感謝@infaustus編輯提議 – Vince

回答

1

您忘了更改分隔符,因此您的查詢(第4行) 中的第一個;終止整個觸發器定義,從而使「declare」無效。

嘗試

DELIMITER $$ // note this line 
CREATE yada yada yada 
end if; 
END 
DELIMITER ; // note this line 
+0

非常感謝@Marc B – Vince