MySQL触发器中的DECLARATION错误

时间:2015-12-24 15:38:35

标签: mysql

我尝试使用以下代码在 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服务器版本,以便使用正确的语法   靠近&#39;&#39;在第4行&#34;

     

第4行是:&#34; DECLARE code_err_tut integer;

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您忘了更改分隔符,因此查询中的第一个;(第4行) 终止整个触发器定义,使&#34;声明&#34;无效。

尝试

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