MySQL « Как обойти блокировку таблицы в триггере?

Есть таблица в которой храниться события системы. Нужно хранить только определенное количество (а точнее не больше заданного количества) событий в таблицы. Для это я привязал к таблице триггер при вставке (INSERT), который проверяет количество строк и удалят (DELETE) самые поздние по дате. Количество строк для хранения храниться в другой таблице и должно меняться по требованию пользователя.

Но я не учел что, при использованию хранимых процедур и триггеров, таблица блокируются.

#1442 — Can't update table 'tablename' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
 


Как это можно обойти, если это вообще возможно обойти?

Знаю что есть вариант с кроном (cron), но хочеться чтоб это делала сама СУБД.

1 ответов


Ваш подход слишком ударяет по производительности.
Если количество записей может быть не точно меньше заданной величины, то лучше использовать события: http://dev.mysql.com/doc/refman/5.1/en/events.html. Указываете частоту проверки и скрипт, удаляющий лишние записи.