TRIGGERS EN ORACLE 8 - PowerPoint PPT Presentation

1 / 14
About This Presentation
Title:

TRIGGERS EN ORACLE 8

Description:

CREATE TRIGGER rt BEFORE UPDATE OR DELETE OR INSERT ON sal. FOR EACH ROW BEGIN ... IF deleting THEN typ := 'delete'; END IF; IF inserting THEN typ := 'insert'; END IF; ... – PowerPoint PPT presentation

Number of Views:79
Avg rating:3.0/5.0
Slides: 15
Provided by: Fi53
Category:

less

Transcript and Presenter's Notes

Title: TRIGGERS EN ORACLE 8


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
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.

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.

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

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.

6
Tipos de disparadores
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.

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

9
Orden de activación de los disparadores
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

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

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
  • END

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

14
EJEMPLO
  • hour TRUNC((SYSDATE - TRUNC(SYSDATE)) 24)
  • UPDATE stat_tab
  • SET rowcnt rowcnt stat.rowcnt
  • WHERE utype typ
  • AND uhour hour
  • IF SQLROWCOUNT 0 THEN
  • INSERT INTO stat_tab VALUES (typ, stat.rowcnt,
    hour)
  • END IF
  • EXCEPTION
  • WHEN dup_val_on_index THEN
  • UPDATE stat_tab
  • SET rowcnt rowcnt stat.rowcnt
  • WHERE utype typ
  • AND uhour hour
  • END
Write a Comment
User Comments (0)
About PowerShow.com