MySQL触发器在插入后删除旧行

lin*_*ngo 3 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
Run Code Online (Sandbox Code Playgroud)

Ama*_*wal 5

您不能从实现触发器的同一表中删除行。因为在插入时mysql锁定表并且不能删除行,因为delete需要锁定,所以它处于死锁状态,这就是mysql不允许这样做的原因。