我正在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行的''附近使用正确的语法
答案 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 ;