Mysql触发器上的错误1064

时间:2015-08-16 17:23:58

标签: mysql sql triggers syntax-error

我正在MySQL中编写一个触发器来记录表更新。日志表称为individuo_storico,目标表称为individuo。更新个性化时,我想检查IDQualifica和IDLivello是否被更改,如果是,则插入个性化目录中的记录。

我写下这段代码,但是我收到#1064错误,这是语法错误?

use ore;
create trigger individuo_update after update on individuo
for each row
begin
    if ( NEW.IDLivello <> OLD.IDLivello or NEW.IDQualifica <> OLD.IDQualifica) then
        insert into individuo_storico(IDIndividuo, IDQualifica, IDLivello) 
        values (NEW.IDIndividuo, NEW.IDQualifica, NEW.IDLivello);
    end if;
end;
  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第6行的''附近使用正确的语法

1 个答案:

答案 0 :(得分:2)

请用必要的标记包装你的触发器创建,这样db引擎就不会阻塞它。所以有三个方面:

1) line 1
2) right after the end; 
3) and then a reset to a default delimiter. 

与存储过程创建相同的概念。

DELIMITER $$
create trigger individuo_update after update on individuo
for each row
begin
    if ( NEW.IDLivello <> OLD.IDLivello or NEW.IDQualifica <> OLD.IDQualifica) then
        insert into individuo_storico(IDIndividuo, IDQualifica, IDLivello) 
        values (NEW.IDIndividuo, NEW.IDQualifica, NEW.IDLivello);
    end if;
end;$$
DELIMITER ;