Professional Documents
Culture Documents
TRIGGER
BASE DE DATOS LABORATORIO VI
Un trigger (o disparador) en una Base de datos , es un procedimiento que se ejecuta cuando se
cumple una condicin establecida al realizar una operacin de insercin (INSERT),
actualizacin (UPDATE) o borrado (DELETE).
Contenido
I.
II.
III.
IV.
V.
VI.
VII.
Usos
Componentes principales
Tipos
Efectos y caractersticas
Ejemplo
Disparadores en MySQL
Disparadores en PostgresQL
USOS
Son usados para mejorar la administracin de la Base de datos, sin necesidad de contar con
que el usuario ejecute la sentencia de SQL. Adems, pueden generar valores de columnas,
previene errores de datos, sincroniza tablas, modifica valores de una vista, etc. Permite
implementar programas basados en paradigma lgico (sistemas expertos, deduccin).
COMPONENTES PRINCIPALES
La estructura bsica de un trigger es:
TIPOS
Existen dos tipos de disparadores que se clasifican segn la cantidad de ejecuciones a realizar:
INGENIERIA DE SISTEMAS
EFECTOS Y CARACTERSTICAS
No pueden ejecutar las operaciones COMMIT o ROLLBACK por que estas son parte de
la sentencia SQL del disparador (nicamente a travs de transacciones autnomas)
Ejemplo
Un sencillo ejemplo sera crear un Trigger para insertar un pedido de algn producto cuando la
cantidad de ste, en nuestro almacn, sea inferior a un valor dado.
BEFORE UPDATE ON tabla_almacen
FOR ALL records
IF :NEW.producto < 100 THEN
INSERT INTO tabla_pedidos(producto) VALUES ('1000');
END IF;
SELECT DBO.POLVE.TEST
END
DISPARADORES EN MYSQL
Los disparadores son soportados en MySQL a partir de la versin 5.0.2. Algunos de los
soportes existentes estn los disparadores para las sentencias INSERT, UPDATE y DELETE
El estndar SQL:2003 requiere que los disparadores den a los programadores acceso a las
variables de un registro utilizando una sintaxis como REFERENCING NEW AS n. Por ejemplo,
si un disparador est monitoreando los cambios en la columna salario, podra escribirse un
disparador como:
CREATE TRIGGER ver_salario
BEFORE UPDATE ON empleados
REFERENCING NEW ROW AS n, OLD ROW AS o
FOR EACH ROW
IF n.salario <> o.salario THEN
INGENIERIA DE SISTEMAS
END IF;
Como en MySQL las sentencias se ejecutan luego de escribir el signo punto y coma (;), cabe
destacar que para crear un disparador en MySQL, antes se escribe la sentencia DELIMITER
seguida de un caracter tal como |, la cual asigna la funcin del punto y coma (;) a otro caracter
permitiendo que el disparador sea escrito usando los punto y comas sin que se ejecute
mientras se escribe; despus de escrito el disparador se escribe nuevamente la sentencia
DELIMITER ; para asignar al punto y coma su funcin habitual.
DISPARADORES EN POSTGRESQL
PostgresQL soporta el uso de disparadores, estos pueden anexarse a las tablas pero no a las
vistas; aunque a las vistas se les pueden crear reglas.
Al igual que en MySQL los disparadores de PostgresQL se pueden activar luego de sentencias
INSERT, UPDATE o DELETE
Cuando hay varios disparadores, se activan en orden alfabtico.
Adems de permitir el uso de funciones en el lenguaje nativo de PostgresQL, PL/PgSQL, los
disparadores tambin permiten invocar funciones escritas en otros lenguajes como PL/Perl.
En Postgres un disparador ejecuta una funcin la cual contiene el cdigo de lo que se requiere,
esto difiere del mtodo expuesto anteriormente para MySQL que escribe el cdigo a ejecutarse
dentro del mismo disparador.
El siguiente es un ejemplo de disparador creado con su respectiva funcin:
CREATE OR REPLACE FUNCTION actualizar() RETURNS
TRIGGER AS $ejemplo$
BEGIN
NEW.nombre := NEW.nombres || ' ' || NEW.apellidos ;
RETURN NEW;
END;
INGENIERIA DE SISTEMAS