pg_cron en PostgreSQL
pg_cron es una extensión que permite programar tareas periódicas directamente dentro de PostgreSQL, usando sintaxis similar a cron.
¿Qué es pg_cron?
Es un scheduler interno que ejecuta comandos SQL en horarios definidos. Ideal para automatizar respaldos, auditorías y mantenimiento sin depender del sistema operativo.
Características principales
- Automatización de tareas repetitivas
- Gestión mediante sentencias SQL
- Almacenamiento en tablas de catálogo
- Control de permisos con roles de PostgreSQL
Sintaxis básica
SELECT cron.schedule(
'job_diario_backup', -- nombre del job
'0 3 * * *', -- expresión cron (minuto, hora, día, mes, día_semana)
$$ CALL realizar_backup(); $$ -- comando SQL a ejecutar
);
Ejemplo: 0 3 * * * significa todos los días a las 03:00.
Ejemplo práctico
-- Auditoría automática cada 10 minutos
SELECT cron.schedule(
'auditoria_empleados',
'*/10 * * * *',
$$ INSERT INTO log_empleados
SELECT * FROM empleados WHERE modificado = true; $$
);
Ventajas frente a cron del sistema
- Centralización dentro de PostgreSQL
- Portabilidad sin acceso al SO
- Seguridad mediante roles