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 不允许这样做。