PostgreSQL Activadores: crear, enumerar y eliminar con ejemplo
โก Resumen inteligente
PostgreSQL Los disparadores son funciones que se ejecutan automรกticamente cuando se produce un evento de INSERCIรN, ACTUALIZACIรN o ELIMINACIรN en una tabla, lo que permite a la base de datos aplicar reglas, registrar cambios y auditar datos sin necesidad de cรณdigo de aplicaciรณn adicional.

ยฟQuรฉ es el gatillo? PostgreSQL?
A PostgreSQL Desencadenar Es una funciรณn que se activa automรกticamente cuando ocurre un evento en la base de datos, por ejemplo, en una tabla. Algunos ejemplos de eventos que pueden activar un disparador son INSERTAR, ACTUALIZAR, ELIMINAR, etc. Ademรกs, al crear un disparador para una tabla, este se desactivarรก automรกticamente cuando se elimine dicha tabla.
Cรณmo se utiliza Trigger en PostgreSQL?
Un disparador puede marcarse con el operador FOR EACH ROW durante su creaciรณn. Dicho disparador se ejecutarรก una vez por cada fila modificada por la operaciรณn. Un disparador tambiรฉn puede marcarse con el operador FOR EACH STATEMENT durante su creaciรณn. Este disparador se ejecutarรก solo una vez para una operaciรณn especรญfica.
PostgreSQL crear activador
Para crear un disparador, usamos la funciรณn CREAR DISPARADOR. Aquรญ estรก la sintaxis de la funciรณn:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name ON table-name [ -- Trigger logic ];
El nombre del disparador es el nombre del disparador.
ANTES, DESPUรS y EN LUGAR DE son palabras clave que determinan cuรกndo se invocarรก el activador.
El nombre del evento es el nombre del evento que harรก que se invoque el disparador. Esto puede ser INSERT, ACTUALIZAR, ELIMINAR, etc.
El nombre de la tabla es el nombre de la tabla en la que se crearรก el activador.
Si se va a crear el disparador para una operaciรณn INSERT, debemos agregar el parรกmetro ON column-name.
La siguiente sintaxis demuestra esto:
CREATE TRIGGER trigger-name AFTER INSERT ON column-name ON table-name [ -- Trigger logic ];
PostgreSQL Crear ejemplo de activador
Usaremos la tabla de precios que se proporciona a continuaciรณn:
Precio:
Creemos otra tabla, Price_Audits, donde registraremos los cambios realizados en la tabla Price:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL );
Ahora podemos definir una nueva funciรณn llamada auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql;
La funciรณn anterior insertarรก un registro en la tabla Price_Audits, incluida la nueva identificaciรณn de fila y la hora en que se creรณ el registro.
Ahora que tenemos la funciรณn de activaciรณn, debemos vincularla a nuestra tabla de precios. Le daremos al disparador el nombre price_trigger. Antes de que se cree un nuevo registro, la funciรณn de activaciรณn se invocarรก automรกticamente para registrar los cambios. Aquรญ estรก el disparador:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc();
Insertemos un nuevo registro en la tabla de Precios:
INSERT INTO Price VALUES (3, 400);
Ahora que hemos insertado un registro en la tabla Price, tambiรฉn deberรญa insertarse un registro en la tabla Price_Audits debido al disparador que creamos. Vamos a comprobarlo:
SELECT * FROM Price_Audits;
Esto devolverรก lo siguiente:
El disparador funcionรณ con รฉxito.
PostgreSQL Disparador de lista
Todos los desencadenantes que crees en PostgreSQL se almacenan en la tabla pg_trigger. Para ver la lista de activadores que tiene en el base de datos de CRISPR Medicine News, consulte la tabla ejecutando el comando SELECT como se muestra a continuaciรณn:
SELECT tgname FROM pg_trigger;
Esto devuelve lo siguiente:
La columna tgname de la tabla pg_trigger indica el nombre del disparador.
PostgreSQL Disparador de caรญda
Cuando ya no se necesita un disparador, puede eliminarlo con la misma facilidad. Para soltar un PostgreSQL disparador, utilizamos la instrucciรณn DROP TRIGGER con la siguiente sintaxis:
DROP TRIGGER [IF EXISTS] trigger-name
ON table-name [ CASCADE | RESTRICT ];
El parรกmetro nombre del activador indica el nombre del activador que se va a eliminar.
El nombre de la tabla indica el nombre de la tabla de la que se eliminarรก el activador.
La clรกusula IF EXISTS intenta eliminar un activador que existe. Si intenta eliminar un activador que no existe sin utilizar la clรกusula IF EXISTS, obtendrรก un error.
La opciรณn CASCADA le ayudarรก a eliminar automรกticamente todos los objetos que dependen del disparador.
Si utiliza la opciรณn RESTRICT, el activador no se eliminarรก si los objetos dependen de รฉl.
Por Ejemplo:
Para colocar el disparador llamado example_trigger en la tabla Company, ejecute el siguiente comando:
DROP TRIGGER example_trigger IF EXISTS
ON Company;
Usando pgAdmin
Ahora veamos cรณmo se realizan las tres acciones usando pgAdmin.
Cรณmo crear un disparador en PostgreSQL usando pgAdmin
Aquรญ te mostramos cรณmo puedes crear un disparador en PostgreSQL usando pgAdmin:
Paso 1) Inicie sesiรณn en su cuenta pgAdmin
Abra pgAdmin e inicie sesiรณn en su cuenta con sus credenciales.
Paso 2) Cree una base de datos de demostraciรณn
- En la barra de navegaciรณn de la izquierda, haga clic en Bases de datos.
- Haga clic en Demostraciรณn.
Paso 3) Escriba la consulta
Para crear la tabla Price_Audits, escriba la consulta en el editor:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL )
Paso 4) Ejecutar la consulta
Haga clic en el botรณn Ejecutar.
Paso 5) Ejecute el Code para funciรณn de auditorรญa
Ejecute el siguiente cรณdigo para definir la funciรณn auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql
Paso 6) Ejecute el Code para crear un disparador
Ejecute el siguiente cรณdigo para crear el disparador price_trigger:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc()
Paso 7) Insertar un nuevo registro
- Ejecute el siguiente comando para insertar un nuevo registro en la tabla de precios:
INSERT INTO Price VALUES (3, 400)
- Ejecute el siguiente comando para verificar si se insertรณ un registro en la tabla Price_Audits:
SELECT * FROM Price_Audits
Esto deberรญa devolver lo siguiente:
Paso 8) Verifique el contenido de la tabla
Vamos a comprobar el contenido de la tabla Price_Audits.
Listado de activadores usando pgAdmin
Paso 1) Ejecute el siguiente comando para comprobar los activadores en su base de datos:
SELECT tgname FROM pg_trigger
Esto devuelve lo siguiente:
Necesarioping Activadores mediante pgAdmin
Para colocar el disparador llamado example_trigger en la tabla Company, ejecute el siguiente comando:
DROP TRIGGER example_trigger IF EXISTS
ON Company
Descargue la Base de Datos utilizada en este Tutorial







