尝试在phpMyAdmin中创建触发器时出错

时间:2017-06-18 15:44:51

标签: php mysql database triggers phpmyadmin

我有以下触发器:

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行仍然遇到同样的错误。

1 个答案:

答案 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;