PHPMyAdmin更新后触发器无法正常工作

时间:2014-08-09 16:36:14

标签: php mysql sql triggers sql-update

我正在使用PHP MyAdmin版本4.1.12。

我正在尝试创建一个简单的触发器,在更新后,将'person'表中的'dateModified'设置为CURRENT_TIMESTAMP。 dateModified的类型为TIMESTAMP。人员更新的方式是通过网页上的X-Editable启用的网格视图在单个记录中设置单个属性。在使用updated属性对模型执行验证后,将使用相关更新SQL创建新的数据库命令并执行。因此,每次更新只会修改“人”中的一行。

这是我写的用于创建触发器的SQL:

DELIMITER |
CREATE TRIGGER PERSON_AUPD AFTER UPDATE ON person
FOR EACH ROW BEGIN
SET @dateModified = CURRENT_TIMESTAMP ;
END;
|
DELIMITER ;

执行更新后,我看到触发器没有触发,并且时间戳与它们创建的时间戳保持不变(dateModified和dateCreated的默认值都是CURRENT_TIMESTAMP,因此它们会在插入时自动设置)

我一直在寻找答案,甚至研究了获得更新的替代方法(替代方法是调用模型的afterupdate方法并在dateModified上执行单独的SQL)。在我将更多代码放入模型之前,我宁愿用尽所有机会来使用触发器。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

感谢@juergend,解决方案如下:

  • 将触发类型设置为before update,因为after update无法更新属性,最适合在相关审核表中插入新记录等。

  • NEW.添加到您要修改的属性的前面。