我有一个名为teamMembers
的表,此表存储了一个人的姓名和电子邮件地址:
id INT (UNIQUE, AUTOINCREMENT)
name VARCHAR(255)
email VARCHAR(255)
updated DATETIME
created TIMESTAMP
我已使用phpMyAdmin
创建了我的触发器,在此导出中看起来像这样:
CREATE TRIGGER teamMembers.updated_updater
AFTER UPDATE ON teamMembers
FOR EACH ROW
BEGIN
UPDATE teamMembers SET updated = NOW() WHERE id = OLD.id;
END
所以当我使用这样的查询时:
UPDATE teamMembers SET name = 'test' WHERE id = 1
我应该将更新后的列设置为当前日期时间。
这不起作用,我收到此错误消息:
#1442 - 无法更新表格' teamMembers'在存储的函数/触发器中,因为它已被调用此存储的语句使用 功能/触发。
我无法弄清楚这里的问题是什么。我认为这是因为这个触发器也会调用自己,因此会变成无限循环。 我认为必须有一种方法可以自动更新刚更新的记录而不改变我的查询。
有人可以帮助我使用MySQL触发器更新到updated
列吗?
答案 0 :(得分:4)
使用before
触发器:
CREATE TRIGGER teamMembers.updated_updater
BEFORE UPDATE ON teamMembers
FOR EACH ROW
BEGIN
SET new.updated = NOW();
END