Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo
Puede tomar dos valores: BEFORE ó AFTER que indicará si el cuerpo del disparador
debe ejecutarse antes o después del evento que causa la activación del disparador.
Ambos valores pueden aplicarse tanto para disparadores a nivel de fila como a nivel de
orden.
Por ejemplo:
Y también para:
Pero no para:
Cuando no exista definición del granularidad del evento, significará que el disparador
está definido a nivel de orden.
Ejemplos:
• al valor que tenía la columna antes del cambio debido a una modificación
(UPDATE)
• al valor de una columna antes de una operación de borrado sonbre la misma
(DELETE)
• al valor NULL para operaciones de inserción (INSERT)
Sin embargo hay que tener en cuenta que las variable OLD y NEW sólo pueden ser
utilizadas cuando el disparador se ha definido a nivel de fila.
BEGIN
cuerpo del trigger
END nombre;
Dentro de este cuerpo también se puede hacer referencia a las variables OLD y NEW
sólo que en este caso habrá que utilizarlas con : delante.
Ejemplo:
BEGIN
DELETE FROM tabla2 WHERE tabla2.cod=:OLD.cod;
END Ejemplo;
Órdenes de disparadores
Eliminación de un disparador
Habilitación/deshabilitación de un disparador
Bibliografía
§ Cannan, S.J.,(1999), The SQL Files, investigation into a database language, Array
Publications. 1999.
EJERCICIOS
1. Supongamos que tenemos las siguientes tablas con los siguientes atributos:
Crear un disparador que consiga mantener actualizada la tabla transacción cada vez
que se modifique la tabla cuenta (se cambie el atributo balance).
2. Supongamos que tenemos una tabla de distancias de diferentes rutas y que queremos
guardar estas distancias en kilómetros y en millas.
Anexo.
Funciones asociadas a datos de tipo fecha
Los datos de tipo fecha en realidad contienen la fecha y la hora. Esto es especialmente
importante cuando se comparen dos fechas. El formato por defecto es DD-Mes-AA aunque
es posible cambiarlo.
next_day(d,day) à Fecha del día especificado (lunes, martes, ...en inglés)de la semana
siguiente a d