Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Mejorar la seguridad de la base de datos con
disparadores
Auditar los cambios de datos con disparadores DML
Forzar la integridad de los datos con disparadores DML
Mantener la integridad referencial con disparadores
Utilizar disparadores para replicar datos entre tablas
Utilizar disparadores para automatizar el clculo de
datos derivados
Proporcionar funciones de registro de eventos con
disparadores
AUDIT_EMPDML_TRG
AFTER STATEMENT
llama al procedimiento
AUDIT_EMP
AUDIT_TABLE
2
AUDIT_EMP_TRG
FOR EACH ROW
incrementa las
variables del
paquete
4
El procedimiento AUDIT_EMP
lee las variables del paquete,
actualiza AUDIT_TABLE y
restablece las variables del paquete
Paquete AUDIT_PKG
CREATE OR REPLACE PACKAGE audit_emp_pkg IS
delcnt PLS_INTEGER := 0;
inscnt PLS_INTEGER := 0;
updcnt PLS_INTEGER := 0;
PROCEDURE init;
PROCEDURE set(i BOOLEAN,u BOOLEAN,d BOOLEAN);
END audit_emp_pkg;
/
CREATE OR REPLACE PACKAGE BODY audit_emp_pkg IS
PROCEDURE init IS
BEGIN
inscnt := 0; updcnt := 0; delcnt := 0;
END;
PROCEDURE set(i BOOLEAN,u BOOLEAN,d BOOLEAN) IS
BEGIN
IF i THEN inscnt := inscnt + 1;
ELSIF d THEN delcnt := delcnt + 1;
ELSE upd := updcnt + 1;
END IF;
END;
END audit_emp_pkg;
/
Copyright 2004, Oracle. Todos los Derechos Reservados.
Tabla AUDIT_TABLE y
Procedimiento AUDIT_EMP
CREATE TABLE audit_table (
USER_NAME
VARCHAR2(30),
TABLE_NAME VARCHAR2(30),
INS
NUMBER,
UPD
NUMBER,
DEL
NUMBER)
/
CREATE OR REPLACE PROCEDURE audit_emp IS
BEGIN
IF delcnt + inscnt + updcnt <> 0 THEN
UPDATE audit_table
SET del = del + audit_emp_pkg.delcnt,
ins = ins + audit_emp_pkg.inscnt,
upd = upd + audit_emp_pkg.updcnt
WHERE user_name = USER
AND
table_name = 'EMPLOYEES';
audit_emp_pkg.init;
END IF;
END audit_emp;
/
Copyright 2004, Oracle. Todos los Derechos Reservados.
UPDATE departments
SET total_sal=(SELECT SUM(salary)
FROM employees
WHERE employees.department_id =
departments.department_id);
Resumen
En esta leccin, debe haber aprendido lo siguiente:
Utilizar disparadores de base de datos o la
funcionalidad del servidor de base de datos para: