Beruflich Dokumente
Kultur Dokumente
Inicio
TRIGGER DE
BASES DE DATOS.
DISPARADORES DE B.D.
Concepto y utilizacin.
DISPARADORES DE B.D.
Sintaxis
ON Nombre_tabla
[REFERENCING NEW AS nombre_nuevo OLD AS nombre_viejo]
DISPARADORES DE B.D.
Explicacin
DISPARADORES DE B.D.
Explicacin (continacin... )
Resumen
DISPARADORES DE B.D.
(3)
(2)
(2)
DISPARADORES DE B.D.
:NEW y :OLD
DISPARADORES DE B.D.
Ejemplo 1
DISPARADORES DE B.D.
Ejemplo 2
DISPARADORES DE B.D.
Predicados condicionales
DISPARADORES DE B.D.
1.
2.
3.
4.
Secuencia de ejecucin.
DISPARADORES DE B.D.
DISPARADORES DE B.D.
Trigger de sustitucin
DISPARADORES DE B.D.
DDL_SQL y vistas
User_triggers
Dba_triggers
DISPARADORES DE B.D.
Consideraciones
EJEMPLO
CREATE OR REPLACE TRIGGER Control_auditoria_cli
AFTER DELETE OR INSERT OR UPDATE
ON CLIENTES
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
ins number;
del number;
modif number;
BEGIN
select insercion,borrado,modificacion into ins, del, modif from auditoria_cli;
if inserting then
ins:= ins+1;
elsif deleting then
del := del+1;
elsif updating then
modif := modif +1;
end if
update auditoria_cli set insercion = ins, borrado = del, modificacion = modif;
END;
Ejemplo
CREATE OR REPLACE TRIGGER LIM-MAYOR-IMPORTE
BEFORE INSERT
ON PEDIDOS
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
limite clientes.lim_credito%type;
precio productos.precio%type;
BEGIN
select lim_credito into limite from clientes
where num_Clie = :new.clie;
Select precio into precio from productos
where id_fab || id_producto = :new.fab || :new.producto;
if limite < :new.cant * precio then
util.mostrar(EL IMPORTE NO ES VALIDO);
raise_application_error (-30503,'NO PERMITIDO insertar);
end if;
EXCEPTION
when no_data_found then
util.mostrar(El cliente o producto no existe);
END;