Sunteți pe pagina 1din 4

2018 PL/SQL Triggers (Disparadores) PostgreSQL Base de Datos II

Disparadores o Triggers

Sintaxis

CREATE TRIGGER nombre_disp momento_disp evento_disp

ON nombre_tabla FOR EACH ROW sentencia_disp;

--

CREATE TRIGGER nombre_disp momento_disp evento_disp


ON nombre_tabla
FOR {insert | update | delete} [, {insert | update | delete} ...]
AS
sql_statements;

En postgres primero se debe crear una función que retorne un trigger y luego se crea un trigger que ejecute esa
función.

 Creamos la tabla persona

CREATE TABLE persona


(codigo integer,
nombre character varying,
foto bytea )

Ing. Harvey Michael Gamboa Peña Universidad de Pamplona – Ext. Villa Rosario
2018 PL/SQL Triggers (Disparadores) PostgreSQL Base de Datos II

 Creamos la tabla auditoria

CREATE TABLE auditoria


( codigo integer,
nombre character varying )

 Creo la función insertar_trigger para que cada vez que elimine un registro de la tabla persona ingrese
automaticamente en la tabla auditoria

-- Crear función que retorne trigger

CREATE OR REPLACE FUNCTION insertar_trigger() RETURNS TRIGGER AS $insertar$


DECLARE BEGIN
INSERT INTO auditoria VALUES (OLD.codigo, OLD.nombre);
RETURN NULL;
END;
$insertar$ LANGUAGE plpgsql;

Ya que tenemos nuestra función creamos el trigger insertar_auditoria cuando se elimine una fila de la
tabla persona.

CREATE TRIGGER insertar_auditoria AFTER DELETE


ON persona FOR EACH ROW
EXECUTE PROCEDURE insertar_trigger();

 Ahora vamos a probar el trigger eliminando un registro de la tabla persona

Ing. Harvey Michael Gamboa Peña Universidad de Pamplona – Ext. Villa Rosario
2018 PL/SQL Triggers (Disparadores) PostgreSQL Base de Datos II

DELETE FROM persona WHERE codigo = 3

Vemos como en la tabla persona no se encuentra el código 3.

Vemos como en la tabla auditoria se adicionan los datos de la persona que se eliminó

 Ahora realizaremos la creación de un trigger para después de actualizar la tabla persona inserte en
auditoria

CREATE TRIGGER actualizar AFTER UPDATE


ON persona FOR EACH ROW
EXECUTE PROCEDURE insertar_trigger();

 Actualizamos la tabla persona

UPDATE persona SET nombre = 'Gepardo' WHERE codigo = 1;

 Verificamos datos

 Ver tabla persona

 Ver tabla auditoria

Trabajo en Clase

Deben implementar el uso de estos disparadores para la BD Hotel (si no existe favor crear tabla).
¿En dónde? Por ejemplo en la tabla usuario (si cambia el logueo) para llevar un histórico

Realizar un trigger que me permita insertar en una tabla (contrato) un id incremental el cual se compone
de la fecha (ddmmyyyy) Letras (NC) y un número (00001), esto se debe incrementar al insertar cada
registro ejemplo

Registro uno

Ing. Harvey Michael Gamboa Peña Universidad de Pamplona – Ext. Villa Rosario
2018 PL/SQL Triggers (Disparadores) PostgreSQL Base de Datos II

ddmmyyyyNC0000X
25052015NC00001

Registro dos
ddmmyyyyNC0000X
25052015NC00002

Nota: si cambia el día se debe cambiar la fecha

Aplicar este ejemplo en la tabla reserva habitación de la BD Hotel y en otras donde sea recomendado
utilizar

Ing. Harvey Michael Gamboa Peña Universidad de Pamplona – Ext. Villa Rosario

S-ar putea să vă placă și