Sei sulla pagina 1di 3

CONCEPTO DE TRIGGER EN ORACLE. CONTEMPLA ACCIONES SOBRE LA BASE DE DATOS Y NO SOBRE LA TABLA SOLAMENTE.

ACCION ---> BASE DE DATOS -->EVENTO -->TRIGGER existen 2 tipos de triger trigger DML (insert, update, delete). trigger de sistema DDL(BD) (logon de usuario, logoff, creacion de objeto) Estructura de los disparadores La definicin de un disparador consta de los siguientes componentes (opcionales): Nombre del disparador CREATE [OR REPLACE] TRIGGER <nombre de disparador> Tiempo o punto del disparador BEFORE | AFTER Eventos disparadores INSERT OR UPDATE [OF <columna(s)>] OR DELETE ON <tabla> Tipo de disparador (opcional) FOR EACH ROW Restricciones disparador (solo para disparador FOR EACH ROW ) WHEN (<condicin>) Cuerpo del disparador <Bloque PL/SQL> MOMENTOS EN LAS ACCIONES PARA LOS TRIGGERS. PRIMERA CLASIFICACION 1. BEFORE : ANTES 2. AFTER : DESPUES.
PRINCIPAL UTILIDAD DEL BEFORE:

LA VENTAJA LA PRESENTA EN EL UPDATE. EN UN TRIGGER BEFORE PUEDO CAMBIAR LOS NUEVOS VALORES. SIEMPRE EXISTEN VARIABLES DE ENTORNO CUANDO SE DISPARA UN TRIGGER DML: SON :OLD.<NOMBRE_CAMPO> :NEW.<NOMBRE_CAMPO> CASOS DE EJEMPLO: INSERT EN EMP: :NEW.EMPNO --> 7778 :NEW.ENAME --> 'JCULLAS' :NEW.EMPNO --> --UPDATE EN EMP: :NEW.EMPNO --> 1000 :OLD.EMPNO --> 7778 :OLD.ENAME --> 'JCULLAS' :OLD.SAL --> 700 NOTA: EN OLD EXISTIRIAN TODOS LOS CAMPOS. DELETE EN EMP: :OLD.EMPNO --> 7778

:OLD.ENAME --> 'JCULLAS' :OLD.SAL --> 700 NOTA: SOLO USARIA LA VARIABLE OLD.

UN TRIGGER SE DISPARA POR CADA FILA ACTUALIZADA PERO PUEDE EJECUTARSE POR SENTENCIA SEGUNDA CLASIFICACION. 1. POR FILA.--> for each row. ->Slo con un disparador-fila es posible acceder a los valores de los atributos de una tupla, antes y despus de la modificacin (ya que el disparador es ejecutado una vez por cada tupla). SI ACUALIZO 1000 REGISTROS EL TRIGGER SE DISPARA 1000 VECES 2. POR SENTENCIA. SI ACUALIZO 1000 REGISTROS EL TRIGGER SE DISPARA UNA VEZ

UN TRIGGER ESTA DENTRO DE UNA TRANSACCION (NO PUEDO PONER UN COMMIT NI UN ROOLBACK) EL TRIGGER ES PARTE DE LA TRANSACCION, PERO NO PUEDE REEMPLAZAR A UN COMMIT O UN ROOLBACK.

DROP TRIGGER <nombre de disparador> borra un disparador.

select trigger_name from user_triggers; visualize los triggers


Los triggers pueden activarse/desactivarse: alter trigger <trigger_name> {disable|enable}; alter table <table_name> enable all triggers;

Triggers. Restricciones especficas de ORACLE. ORACLE aade ciertas restricciones sobre los trigger_body: NO se puede modificar desde el trigger la misma tabla cuya modificacin dispara el trigger. NO se puede modificar desde el trigger una tabla vinculada a la tabla del trigger por restricciones como las de clave fornea.

Preguntas
3. Cuales son los tipos de eventos en los que puede activarse un .trigger.? 4. Los .trigger. permiten indicar el orden de ejecucion del codigo asociado a un .trigger. con respecto a la operacion que dio pie al evento que lo disparo. Cuales son los tres posibles ordenes que pueden establecerse? 5. En un .trigger., Para que sirven las .variables magicas. old y new ?. Para cuales operaciones tiene sentido la variable old y para cuales la variable new?. A traes de que clausula puede cambiarse el nombre de las variables magicas new y old? 6. Que diferencia existe entre un .trigger. a nivel de _las (de_nidos utilizando la clausula FOR EACH ROW) y un .trigger. a nivel de tabla (aquel de_nido sin utilizar la clausula

FOR EACH ROW)? 7. Para que sirve la clausula WHEN? Es aplicable para .triggers. a nivel de _las? Es aplicable para .triggers. a nivel de tablas? 8. Que utilidad le encuentra a los predicados INSERTING, DELETING y UPDATING? Que relacion existe entre estos predicados y los posibles eventos que pueden disparar la ejecucion de un .trigger.? 9. Uno de los posibles usos de los .triggers. dentro del proceso de implantacion de una base de datos es el de implementar algunas de las restricciones explcitas derivadas de traducir las restricciones estructurales - pares (min,max) - asociadas a la participacion de entidades en interrelaciones. Analice nuevamente el esquema ER de INMOVE y el esquema relacional resultante de traducir este esquema conceptual a _n de determinar cuales de las restricciones estructurales podran ser implementadas a traves de un .trigger.. Para cada una de las restricciones estructurales implementables a traves de .triggers. indique: Sobre que tabla(s) deberan de_nirse el(los) .trigger(s). que permitir_an implementarla restriccion. Cual (cuales) seran los eventos a los que el(los) .trigger(s). necesarios deberan ejecutarse. Estara el(los) .trigger(s). de_nido a nivel de _las o a nivel de tabla?. Es necesario de_nir alguna condicion que deba ser cumplida por las _las para que se aplique el(los) .trigger(s). sobre ella? Que accion debera ejecutar el(los).trigger(s)?

Potrebbero piacerti anche