mysql - Mysql触发器错误1064

标签 mysql sql triggers syntax-error

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

我写下这段代码,但出现 #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 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6

最佳答案

请用必要的名字包装你的触发器创建,这样数据库引擎就不会阻塞它。所以三个方面:

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 ;

关于mysql - Mysql触发器错误1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32037927/

相关文章:

php - 4 个条目后关闭 div 标签 - mysql 循环

mysql - 为什么我的查询不使用任何索引?

sql - 在空表上创建索引后插入数据还是在oracle上插入数据后创建唯一索引?

php - 如何防止 PHP 中的 SQL 注入(inject)?

sql - 如何跟踪 PostgreSQL 中任何函数的变化

php - 在mysql while函数中指定序列号

mysql - 如何编写一个 SQL 查询来给出某个值在表中重复的次数?

php - MySQL 上的并发计数器

MySql 触发器问题变量未在命令字符串中引用

sql-server - 更新触发器后将旧记录插入另一个表