MySQL 触发器在插入后删除旧行
MySQL trigger DELETE old rows AFTER INSERT
这个 MySQL 触发器有什么问题?插入后我试图删除超过 1 个月的行。此触发器仅删除最后插入的行。
CREATE TRIGGER `users_logins_delete_olds`
AFTER INSERT ON `users_logins` FOR EACH ROW
BEGIN
DELETE FROM users_logins WHERE user_id = new.user_id AND timestamp < (NOW() - INTERVAL 1 MONTH);
END
尝试DATE_SUB(现在(),间隔 1 个月)
您不能从实施触发器的同一 table 中删除行。
因为在插入时 mysql 锁定 table 并且不能删除行,因为删除需要锁定所以它是一个死锁情况,这就是为什么 mysql 不允许这样做。
这个 MySQL 触发器有什么问题?插入后我试图删除超过 1 个月的行。此触发器仅删除最后插入的行。
CREATE TRIGGER `users_logins_delete_olds`
AFTER INSERT ON `users_logins` FOR EACH ROW
BEGIN
DELETE FROM users_logins WHERE user_id = new.user_id AND timestamp < (NOW() - INTERVAL 1 MONTH);
END
尝试DATE_SUB(现在(),间隔 1 个月)
您不能从实施触发器的同一 table 中删除行。 因为在插入时 mysql 锁定 table 并且不能删除行,因为删除需要锁定所以它是一个死锁情况,这就是为什么 mysql 不允许这样做。