¿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.
¿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.
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 una TRIGGER
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 maestra log
. 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 ...