Magy

Páginas: 6 (1420 palabras) Publicado: 17 de junio de 2010
Taller de Implementación de Base de Datos

DISPARADORES II

DISPARADOR DE MÚLTIPLES EVENTOS
Un trigger puede definirse sobre más de un evento; en tal caso se separan con "or".  Si el trigger se define para más de un evento desencadenante, en el cuerpo del mismo se puede emplear un condicional para controlar cuál operación disparó el trigger. Esto permite ejecutar bloques de código según laclase de acción que disparó el desencadenador.  Para identificar el tipo de operación que disparó el trigger empleamos "inserting", "updating" y "deleting".


EJEMPLO
create or replace trigger tr_cambios_libros before insert or update or delete on libros for each row begin if inserting then insert into control values (user, sysdate,'inserción'); end if; if updating then insert into controlvalues (user, sysdate,'actualización'); end if; if deleting then insert into control values (user, sysdate,'borrado'); end if; end tr_cambios_libros;

PROBLEMA


Creamos la tabla con la siguiente estructura:
create table libros(

codigo number(6), titulo varchar2(40), autor varchar2(30), editorial varchar2(20), precio number(6,2)

);
Creamos la tabla "control": create table control(usuario varchar2(30), fecha date, operacion varchar2(20) );



Creamos un disparador a nivel de sentencia, que se dispare cada vez que se ingrese, actualice o elimine un registro de la tabla "libros". El trigger ingresa en la tabla "control", el nombre del usuario, la fecha y la hora en la cual se realizó la modificación y el tipo de operación que se realizó:
  

si se realizó unainserción (insert), se almacena "inserción"; si se realizó una actualización (update), se almacena "actualización" y si se realizó una eliminación (delete) se almacena "borrado".

create or replace trigger tr_cambios_libros before insert or update or delete on libros for each row begin if inserting then insert into control values (user, sysdate,'inserción'); end if; if updating then insert intocontrol values (user, sysdate,'actualización'); end if; if deleting then insert into control values (user, sysdate,'borrado'); end if; end tr_cambios_libros;

DISPARADOR (OLD Y NEW)


Cuando trabajamos con trigger a nivel de fila, Oracle provee de dos tablas temporales a las cuales se puede acceder, que contienen los antiguos y nuevos valores de los campos del registro afectado por la sentenciaque disparó el trigger. El nuevo valor es ":new" y el viejo valor es ":old". Para referirnos a ellos debemos especificar su campo separado por un punto ":new.CAMPO" y ":old.CAMPO".

 







El acceso a estos campos depende del evento del disparador. En un trigger disparado por un "insert", se puede acceder al campo ":new" unicamente, el campo ":old" contiene "null". En unainserción se puede emplear ":new" para escribir nuevos valores en las columnas de la tabla. En un trigger que se dispara con "update", se puede acceder a ambos campos. En una actualizacion, se pueden comparar los valores de ":new" y ":old". En un trigger de borrado, unicamente se puede acceder al campo "old", ya que el campo ":new" no existe luego que el registro es eliminado, el campo ":new" contiene"null" y no puede ser modificado. Los valores de "old" y "new" están disponibles en triggers after y before.





 



El valor de ":new" puede modificarse en un trigger before, es decir, se puede acceder a los nuevos valores antes que se ingresen en la tabla y cambiar los valores asignando a ":new.CAMPO" otro valor. El valor de ":new" NO puede modificarse en un trigger after, estoes porque el trigger se activa luego que los valores de "new" se almacenaron en la tabla. El campo ":old" nunca se modifica, sólo puede leerse. Pueden usarse en una clásula "when" (que veremos posteriormente). En el cuerpo el trigger, los campos "old" y "new" deben estar precedidos por ":" (dos puntos), pero si está en "when" no.

EJEMPLO


Creamos un trigger a nivel de fila que se...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Empresa Magy
  • RESUMEN MAGY
  • Adam Magyar
  • Magyar
  • Comentario De Texto Magy
  • banco magyar
  • Curriculum Magy
  • PAE MAGY

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS