MySQL 更新后,更新相同 table 的日期时间列
MySQL after update, update datetime column of same table
我有一个名为 teamMembers
的 table,这个 table 存储了一个人的姓名和电子邮件地址:
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 - Can't update table 'teamMembers' in stored function/trigger because it is already used by statement which invoked this stored
function/trigger.
我实在想不通问题出在哪里。我认为这是因为这个触发器也会调用自身,因此会变成一个无限循环。
我认为必须有一种方法可以在不更改查询的情况下自动更新刚刚更新的记录。
有人可以帮我使用 MySQL 触发器更新到 updated
列吗?
使用 before
触发器:
CREATE TRIGGER teamMembers.updated_updater
BEFORE UPDATE ON teamMembers
FOR EACH ROW
BEGIN
SET new.updated = NOW();
END
我有一个名为 teamMembers
的 table,这个 table 存储了一个人的姓名和电子邮件地址:
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 - Can't update table 'teamMembers' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
我实在想不通问题出在哪里。我认为这是因为这个触发器也会调用自身,因此会变成一个无限循环。 我认为必须有一种方法可以在不更改查询的情况下自动更新刚刚更新的记录。
有人可以帮我使用 MySQL 触发器更新到 updated
列吗?
使用 before
触发器:
CREATE TRIGGER teamMembers.updated_updater
BEFORE UPDATE ON teamMembers
FOR EACH ROW
BEGIN
SET new.updated = NOW();
END