Documentos de Académico
Documentos de Profesional
Documentos de Cultura
(Triggers)
Base de Datos II
Ing. Marco Coral
Trigger
Estructura bsica de un
trigger:
Sintaxis
CREATE [OR REPLACE] TRIGGER nombre
{BEFORE|AFTER|INSTEAD OF} --evento
[WHEN condicin]
{FOR EACH ROW}
--Condicion
BEGIN
cuerpo del trigger
--Accin
END;
Tipos
Ejecucin
Opcin: AFTER
CREATE TABLE emp_audit ( emp_audit_id NUMBER(6), up_date DATE,
new_sal NUMBER(8,2), old_sal NUMBER(8,2) );
CREATE OR REPLACE TRIGGER audit_sal
AFTER UPDATE OF salary ON employees FOR EACH ROW
BEGIN
INSERT INTO emp_audit VALUES( :OLD.employee_id, SYSDATE,
:NEW.salary, :OLD.salary );
END;
/
Update employees SET salary = salary * 1.01 WHERE manager_id = 122;
SELECT * FROM emp_audit;
Disparador simple
CREATE TABLE mensaje (fecha DATE, mensaje_t VARCHAR2(50));
CREATE OR REPLACE TRIGGER t_mensaje
AFTER UPDATE OR INSERT ON employees
DECLARE
v_mensaje VARCHAR2(50);
BEGIN
IF UPDATING THEN
v_mensaje := 'Una fila a sido actualizada en la tabla employees';
END IF;
IF INSERTING THEN
v_mensaje := 'Una fila a sido insertada en la tabla employees';
END IF;
INSERT INTO mensaje (fecha, mensaje_t) VALUES (SYSDATE, v_mensaje);
END;
/
UPDATE employees SET salary = salary * 1.01 WHERE department_id = 60;
INSERT INTO employees VALUES(50, 'Marco', 'Coral', 'UIGV','97211143',
'01/09/02', 'AC_MGR', 9000, .2, 101, 110);
SELECT * FROM mensaje;
DELETE FROM employees WHERE employee_id = 50;
Ejercicios