Listado completo de tutoriales

110 - Disparador de actualización - lista de campos (update trigger)


El trigger de actualización (a nivel de sentencia o de fila) permite incluir una lista de campos. Si se incluye el nombre de un campo (o varios) luego de "update", el trigger se disparará únicamente cuando alguno de esos campos (incluidos en la lista) es actualizado. Si se omite la lista de campos, el trigger se dispara cuando cualquier campo de la tabla asociada es modificado, es decir, por defecto toma todos los campos de la tabla.

La lista de campos solamente puede especificarse en disparadores de actualización, nunca en disparadores de inserción o borrado.

Sintaxis general:

 create or replace trigger NOMBREDISPARADOR
  MOMENTO update of CAMPOS
  on TABLA
  NIVEL--statement o for each row
 begin
  CUERPODEL DISPARADOR;
 end NOMBREDISPARADOR;
 /

"CAMPOS" son los campos de la tabla asociada que activarán el trigger si son modificados. Pueden incluirse más de uno, en tal caso, se separan con comas.

Creamos un desencadenador a nivel de fila que se dispara cada vez que se actualiza el campo "precio" de la tabla "libros":

 create or replace trigger tr_actualizar_precio_libros
  before update of precio
  on libros
  for each row
 begin
  insert into control values(user,sysdate);
 end tr_actualizar_precio_libros;
 /

Si realizamos un "update" sobre el campo "precio" de "libros", el trigger se dispara. Pero si realizamos un "update" sobre cualquier otro campo, el trigger no se dispara, ya que está definido solamente para el campo "precio".


Retornar