MySQL触发DELETE旧行AFTER INSERT

时间:2015-07-06 11:50:49

标签: mysql triggers timestamp sql-delete

这个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

2 个答案:

答案 0 :(得分:3)

您无法从实现触发器的同一表中删除行。 因为在插入mysql会锁定表并且无法删除行因为delete需要锁定所以它的死锁情况,这就是mysql不允许这样做的原因。

答案 1 :(得分:0)

尝试DATE_SUB(NOW(),INTERVAL 1 MONTH)