¿Postgres tiene alguna función para admitir registros antiguos obsoletos?
Quiero usar Postgres para iniciar sesión, como una especie de cola, donde los registros (eventos de registro) anteriores a dos semanas se eliminan automáticamente.
postgresql
delete
queue
Albahaca Bourque
fuente
fuente
Respuestas:
No hay una función integrada para eliminar filas automáticamente en un régimen basado en el tiempo (que yo sepa).
Puede ejecutar un cron-job diario (usted decide) para programar
DELETE
comandos simples o usar pgAgent para tal fin.O podría usar la partición con particiones semanales que heredan de una tabla maestra , vamos a llamarlo
log
. Eso haría que la eliminación fuera muy barata : solo mantenga las últimas dos semanas y elimine las particiones más antiguas.Cree una
RULE
o unaTRIGGER
en la tabla maestra que redirija los INSERT a la partición de la semana actual en función de la hora del sistema. Siempre inicie sesión en la tabla maestralog
. Cree tablas secundarias con anticipación. Haga eso con varias semanas de anticipación para estar seguro y ejecute un trabajo cron semanal que agregue futuras tablas secundarias ...Hay ejemplos de código en el manual .
Respuesta relacionada con una función plpgsql que crea tablas automáticamente:
La solución relacionada recrea un
RULE
para redirigir INSERT. Una función de disparo podría escribir dinámicamente en la partición actual ...fuente