La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

TRIGGERS EN ORACLE 8 J. Iriarte S. España

Presentaciones similares


Presentación del tema: "TRIGGERS EN ORACLE 8 J. Iriarte S. España"— Transcripción de la presentación:

1 TRIGGERS EN ORACLE 8 J. Iriarte S. España
Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia 29/01/03

2 Definición Los TRIGGERS (disparadores) son procedimientos que se ejecutan cuando se produce un suceso de base de datos (una operación: INSERT, UPDATE o DELETE) en una tabla específica. El acto de ejecutar un disparador se conoce como disparo. 29/01/03

3 Uso de los TRIGGERS El mantenimiento de restricciones de integridad complejas. La auditoría de la información contenida en una tabla. El aviso automático a otros programas de que hay que llevar a cabo una determinada acción, cuando se realiza un cambio en una tabla. 29/01/03

4 Sintaxis general de un TRIGGER
CREATE [OR REPLACE] TRIGGER nombre_disparador { BEFORE | AFTER  suceso_disparo ON referencia_tabla [FOR EACH ROW [ WHEN condición_disparo ]] cuerpo_disparador 29/01/03

5 Componentes de un disparador
Los componentes de un disparador son el nombre, el suceso de disparo y el cuerpo. La cláusula WHEN es opcional. 29/01/03

6 Tipos de disparadores 29/01/03

7 Disparadores de sustitución
Son un tipo adicional de disparador de Oracle 8. Sólo pueden definirse sobre vistas. Tienen que tener nivel de fila. Cuando definimos disparadores INSTEAD OF para columnas LOB, podemos leer tanto el seudo-registro :OLD como el seudo-registro :NEW, pero no se puede modificar sus valores. 29/01/03

8 Eliminación y deshabilitación de los disparadores
La sintaxis de la orden que elimina un disparador es: DROP TRIGGER nombre_disparador La sintaxis de la orden que deshabilita un disparador es: ALTER TRIGGER nombre_disparador [DISABLE | ENABLE] 29/01/03

9 Orden de activación de los disparadores
29/01/03

10 La cláusula WHEN La cláusula WHEN sólo es válida para los disparadores con nivel de fila. Si está presente, el cuerpo del disparador sólo se ejecutará para las filas que cumplan la condición especificada en la cláusula. La cláusula WHEN tiene la forma: WHEN condición 29/01/03

11 EJEMPLO DROP TABLE stat_tab; CREATE TABLE stat_tab(utype CHAR(8),
rowcnt INTEGER, uhour INTEGER); CREATE OR REPLACE PACKAGE stat IS rowcnt INTEGER; END; 29/01/03

12 EJEMPLO CREATE TRIGGER bt BEFORE UPDATE OR DELETE OR INSERT ON sal
BEGIN stat.rowcnt := 0; END; CREATE TRIGGER rt BEFORE UPDATE OR DELETE OR INSERT ON sal FOR EACH ROW BEGIN stat.rowcnt := stat.rowcnt + 1; 29/01/03

13 EJEMPLO CREATE TRIGGER at AFTER UPDATE OR DELETE OR INSERT ON sal
DECLARE typ CHAR(8); hour NUMBER; BEGIN IF updating THEN typ := 'update'; END IF; IF deleting THEN typ := 'delete'; END IF; IF inserting THEN typ := 'insert'; END IF; 29/01/03

14 EJEMPLO hour := TRUNC((SYSDATE - TRUNC(SYSDATE)) * 24);
UPDATE stat_tab SET rowcnt = rowcnt + stat.rowcnt WHERE utype = typ AND uhour = hour; IF SQL%ROWCOUNT = 0 THEN INSERT INTO stat_tab VALUES (typ, stat.rowcnt, hour); END IF; EXCEPTION WHEN dup_val_on_index THEN END; 29/01/03


Descargar ppt "TRIGGERS EN ORACLE 8 J. Iriarte S. España"

Presentaciones similares


Anuncios Google