Есть ли у Postgres какие-либо функции для поддержки устаревших старых записей?
Я хочу использовать Postgres для регистрации, как своего рода очередь, где записи (события журнала) старше двух недель автоматически удаляются.
Есть ли у Postgres какие-либо функции для поддержки устаревших старых записей?
Я хочу использовать Postgres для регистрации, как своего рода очередь, где записи (события журнала) старше двух недель автоматически удаляются.
Ответы:
Нет встроенной функции для автоматического удаления строк в режиме, основанном на времени (о котором я бы знал).
Вы можете запускать ежедневное (вы решаете) задание cron для планирования простых DELETE
команд или использовать pgAgent для этой цели.
Или вы можете использовать разделение с еженедельными разделами, которые наследуются от главной таблицы , давайте назовем это log
. Это сделало бы удаление очень дешевым : просто оставьте последние две недели и удалите старые разделы.
Создайте a RULE
или a TRIGGER
в главной таблице, которая перенаправляет вставки в раздел текущей недели на основе системного времени. Всегда входите в главную таблицу log
. Создайте дочерние таблицы заранее. Сделайте это на несколько недель вперед, чтобы быть уверенным, и запустите еженедельную работу cron, которая добавляет будущие дочерние таблицы ...
В руководстве приведены примеры кода .
Связанный ответ с функцией plpgsql, создающей таблицы автоматически:
Соответствующее решение воссоздает RULE
для перенаправления INSERT. Функция триггера может записывать в текущий раздел динамически ...