我有以下触发器:
DELIMITER //
CREATE TRIGGER historyTrigger AFTER UPDATE ON Item
FOR EACH ROW
BEGIN
if NEW.LocationId <=> OLD.LocationId or NEW.PersonId <=> OLD.PersonId THEN
insert into History values(null, old.Id, old.LocationId, new.LocationId, old.PersonId, new.PersonId, date(now()));
END IF;
END;//
DELIMITER ;
在我的数据库中正常工作。
但是,当我尝试在phpMyAdmin中创建相同的触发器时,我收到语法错误(#1064 - 您的SQL语法出错; ...靠近第1行){{ 3}}
修改
在网上看到了其他一些问题和例子,并按照评论中的建议,我只留下了触发器的主体:
if NEW.LocationId <=> OLD.LocationId or NEW.PersonId <=> OLD.PersonId THEN
insert into history values(null, old.Id, old.LocationId, new.LocationId, old.PersonId, new.PersonId, date(now()));
但我在第2行仍然遇到同样的错误。
答案 0 :(得分:1)
当您使用该对话框在phpmyadmin中创建触发器时,在应用代码之前会添加create trigger...
的包装位。所以删除主要部分并离开
if NEW.LocationId <=> OLD.LocationId or NEW.PersonId <=> OLD.PersonId THEN
insert into history values(null, old.Id, old.LocationId, new.LocationId, old.PersonId, new.PersonId, date(now()));
end if;