我有一个名为的表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
列吗?
使用before
触发器:
CREATE TRIGGER teamMembers.updated_updater
BEFORE UPDATE ON teamMembers
FOR EACH ROW
BEGIN
SET new.updated = NOW();
END
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句