我正在使用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)。在我将更多代码放入模型之前,我宁愿用尽所有机会来使用触发器。
非常感谢任何帮助。
答案 0 :(得分:0)
感谢@juergend,解决方案如下:
将触发类型设置为before update
,因为after update
无法更新属性,最适合在相关审核表中插入新记录等。
将NEW.
添加到您要修改的属性的前面。