forma automtica en respuesta a ciertos eventos que ocurren en la base de datos. Un disparador no es otra cosa que una accin definida en una tabla de nuestra base de datos y ejecutada automticamente por una funcin programada por nosotros. Esta accin se activar, segn la definamos, cuando realicemos un INSERT, un UPDATE un DELETE en la dicha tabla. TRIGGERS
La definicin de un trigger consta de
dos partes: 1. La definicin de la funcin asociada al trigger que es la que ejecuta la accin en respuesta al evento (INSERT, UPDATE, DELETE) . 2. La definicin formal de trigger que indicar: a) De que tabla se esperarn los eventos . b) A que tipo de evento se responder. TRIGGERS
La sintaxis para la creacin de triggers es la
siguiente: CREATE TRIGGER <nombretrigger> <BEFORE|AFTER> <INSERT|DELETE| UPDATE> ON <nombretabla> FOR EACH <ROW| STATEMENT> EXECUTE PROCEDURE <procedure name>; TRIGGERS
CREATE TRIGGER nombretrigger= Creacin del
trigger [AFTER | BEFORE] = Antes o despus del evento [INSERT | UPDATE | DELETE] = El tipo de evento al que se responder ON nombretabla= De que tabla se esperarn los eventos
FOR EACH [ROW | STATEMENT] = Para cada la
o para cada sentencia EXECUTE PROCEDURE funcin= La funcin que se va a ejecutar (con sus parmetros si es que los necesitara) TRIGGERS
CREATE OR REPLACE FUNCTION nombredelafuncion()
RETURNS trigger AS $BODY$ BEGIN
sentencia.
RETURN;
END;
$BODY$ LANGUAGE 'plpgsql' TRIGGERS PostgreSQL tambin maneja unas cuantas variables al momento de ejecutar un trigger, algunas de estas son:
NEW= Variable compuesta que almacena los
nuevos valores de la tupla que se esta modificando. OLD= Variable compuesta que almacena los valores antiguos de la tupla que se esta modificando. TG_OP= Variable tipo string que indica que tipo de evento est ocurriendo (INSERT, UPDATE, DELETE). TG_TABLE_NAME= el nombre de la tabla que ha activado el disparador que est usando la funcin actualmente. TG_TABLE_SCHEMA=el nombre del esquema TRIGGERS
current_user= el nombre del
usuario que esta actualmente conectado a la base de datos y que ejecuta las sentencias.
current_date= La fecha actual
(del servidor, no del cliente).
current_time= La hora actual
Creamos la base de datos bd_compras EJEMPLO:
1. Funcin tipo trigger
EJEMPLO:
2. Creacin del trigger
EJEMPLO: EJEMPLO: 2. Creacin del trigger EJEMPLO: 1. Funcin tipo trigger EJEMPLO: 2. Creacin del trigger EJERCICIOS 1. Crear un trigger que no permita dejar vacio el nombre del proveedor. 2. Crear un esquema con el nombre de auditoria , dentro del mismo crear una tabla auditoria para la tabla de proveedor. 3. Crear un trigger que permita registrar en la tabla de auditoria las inserciones,modificaciones y borrado que se realizen en la tabla proveedor. Estructura de la tabla: