Crear la Tabla de Registro de Eventos y la Función del Disparador
En este paso, creará la tabla event_log
y la función log_ddl_event
. La tabla event_log
almacenará los detalles de los eventos de la base de datos, y la función log_ddl_event
se ejecutará cuando ocurra un evento específico.
Primero, conéctese a la base de datos PostgreSQL como el usuario postgres
:
sudo -u postgres psql
Ahora, cree la tabla event_log
ejecutando el siguiente comando SQL:
CREATE TABLE event_log (
event_time timestamp without time zone,
event_type text,
schema_name text,
object_name text,
command_tag text
);
Este comando crea una tabla llamada event_log
con columnas para almacenar la hora del evento (event_time
), el tipo de evento (event_type
), el nombre del esquema (schema_name
), el nombre del objeto (object_name
) y la etiqueta del comando (command_tag
).
A continuación, cree la función de disparador de eventos log_ddl_event
. Ejecute el siguiente comando SQL:
CREATE OR REPLACE FUNCTION log_ddl_event()
RETURNS event_trigger
AS $$
BEGIN
INSERT INTO event_log (event_time, event_type, schema_name, object_name, command_tag)
VALUES (NOW(), TG_EVENT, TG_TABLE_SCHEMA, TG_TABLE_NAME, TG_TAG);
END;
$$ LANGUAGE plpgsql;
Este comando crea una función llamada log_ddl_event
. Analicemos lo que hace esta función:
CREATE OR REPLACE FUNCTION log_ddl_event()
: Crea o reemplaza una función llamada log_ddl_event
.
RETURNS event_trigger
: Especifica que la función es una función de disparador de eventos (event trigger function).
AS $$ ... $$ LANGUAGE plpgsql
: Define el cuerpo de la función utilizando el lenguaje plpgsql
.
INSERT INTO event_log ...
: Inserta una nueva fila en la tabla event_log
con los detalles del evento.
NOW()
: Obtiene la marca de tiempo actual (current timestamp).
TG_EVENT
: Una variable especial que contiene el tipo de evento que activó la función (por ejemplo, CREATE TABLE
).
TG_TABLE_SCHEMA
: Una variable especial que contiene el nombre del esquema del objeto que activó la función.
TG_TABLE_NAME
: Una variable especial que contiene el nombre del objeto que activó la función.
TG_TAG
: Una variable especial que contiene la etiqueta del comando (command tag) del evento (por ejemplo, CREATE TABLE
).
Después de ejecutar los comandos anteriores, debería ver CREATE TABLE
y CREATE FUNCTION
en la salida, lo que indica que la tabla y la función se han creado correctamente.