LINUX.ORG.RU

postgre sql

 


0

1

Доброе время суток.

Подскажите, как хранить запись в таблице базы данных хранить запись определенное время? Как указать что бы к примеру запись хранилась 24 часа и удалялась?

Спасибо.


Встроенной функциональности TTL/EXPIRE, насколько я знаю, нет. Что можно сделать:

  1. Периодически запускать DELETE для удаления записей старше 24 часов (по крону, например).
  2. Написать триггер, который будет удалять эти записи, и повесить его на INSERT, например.
  3. Ничего не удалять, а просто не выбирать селектом эти записи.

Естественно, тебе нужно хранить вместе с записью дату создания и время жизни.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 4)

А ты уверен, что тебе это действительно нужно? Что-то мне подсказывает, что ты просто совсем не умеешь в sql. Извини, если ошибаюсь. Просто добавь колонку с датой добавления и условие в 'where' своих запросов.

Если действительно нужно как ты сказал, то либо задача в системном кроне, либо пробуй pg_cron.

WitcherGeralt ★★
()

Как я вижу - в ГУЙ встроить функцию удаления записи. Которая бы постоянно считывала системное время.

Deleted
()

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

Deleted
()
Ответ на: комментарий от Deleted

А за не удаление тебя в некоторых юрисдикциях будут бить посильнее.

anonymous
()

Если вы так планируете место освобождать то запланируйте еще vacuum. Если просто чтоб лишние данные не отображать - это действительно должно делаться в селекте ограничив по дате.

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

Да, я не разбираюсь в работе sql. Все познаётся в учение. На самом деле, решение даже проще, нужно раз в сутки очищать всю таблицу, можно по крону.

я так понимаю я могу запустить задание в кронтабе?

sudo su - postgres -c "psql -c 'TRUNCATE TABLE table_name;' database_name"

Как мне сюда еще Vacuum присунуть? Записей в таблице будет я думаю ну штук 100 в день.

madcry
() автор топика
Ответ на: комментарий от madcry

штук 100 в день

не нужно тебе ничего удалять. пиши нормальные селекты

Deleted
()
Ответ на: комментарий от madcry

Как мне сюда еще Vacuum присунуть?

Почитайте документашку, там не сложно, но есть разные варианты очистки, выберете который вам больше подходит. Это все есть и на русском в том числе.

штук 100 в день.

А вам точно нужен постгрес для этого? Я бы на объемах такого порядка брал sqlite или еще какую встраиваемую базу, а вообще тут надо посмотреть по задаче - если вам, скажем, автоудаление важнее реляционности то может вообще какие-то кэши использовать лучше.

micronekodesu ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.