Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Un trigger puede definirse sobre más de un evento; en tal caso se separan con "or".
on NOMBRETABLA
begin
end NOMBREDISPARADOR;
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 la clase de acción que disparó el desencadenador.
Para identificar el tipo de operación que disparó el trigger empleamos "inserting", "updating" y
"deleting".
Veamos un ejemplo. El siguiente trigger está definido a nivel de sentencia, para los eventos
"insert", "update" y "delete"; cuando se modifican los datos de "libros", se almacena en la tabla
"control" el nombre del usuario, la fecha y el tipo de modificación que alteró la tabla:
on libros
begin
if inserting then
if updating then
end if;
if deleting then
end if;
end tr_cambios_libros;
Si ejecutamos un "insert" sobre "libros", el disparador se activa entrando por el primer "if"; si
ejecutamos un "update" el trigger se dispara entrando por el segundo "if"; si ejecutamos un
"delete" el desencadenador se dispara entrando por el tercer "if".
Una librería almacena los datos de sus libros en una tabla denominada "libros" y controla las
acciones que los empleados realizan sobre dicha tabla almacenando en la tabla "control" el
nombre del usuario, la fecha, y el tipo de modificación que se realizó sobre la tabla "libros".
create table libros( codigo number(6), titulo varchar2(40), autor varchar2(30), editorial
varchar2(20), precio number(6,2) );
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ó:
on libros
begin
if inserting then
insert into control values (user, sysdate,'inserción');
end if;
if updating then
end if;
if deleting then
end if;
end tr_cambios_libros;
Veamos qué nos informa el diccionario "user_triggers" respecto del trigger anteriormente creado:
- base_object_type: a qué objeto está asociado, puede ser una tabla o una vista, en este caso, una
tabla (table);
Vemos que se ingresó un registro que muestra que el usuario "system", el día y hora actual realizó
una inserción sobre "libros".
Una librería almacena los datos de sus libros en una tabla denominada "libros" y controla las
acciones que los empleados realizan sobre dicha tabla almacenando en la tabla "control" el
nombre del usuario y la fecha, cada vez que se modifica el precio o la editorial de un libro.
create table libros( codigo number(6), titulo varchar2(40), autor varchar2(30), editorial
varchar2(20), precio number(6,2) );
4- El gerente permite:
- actualizar los precios de los libros de lunes a viernes de 8 a 18 hs. y sábados entre la 8 y 12 hs.
Cree un disparador para los tres eventos que controle la hora en que se realizan las operaciones
sobre "libros". Si se intenta eliminar, ingresar o actualizar registros de "libros" fuera de los días y
horarios permitidos, debe aparecer un mensaje de error. Si la operación de ingreso, borrado o
actualización de registros se realiza, se debe almacenar en "control", el nombre del usuario, la
fecha y el tipo de operación ejecutada
5- Cambie la fecha y hora del sistema a "domingo 19 hs.". Intente ingresar un libro
Mensaje de error.
6- Cambie la fecha y hora del sistema a "lunes 10 hs.". Intente ingresar un libro.
Mensaje de error.
9- Cambie la fecha y hora del sistema a "domingo 18 hs.". Intente modificar el precio de un libro.
Mensaje de error.
10- Cambie la fecha y hora del sistema a "sabado 15 hs.". Intente modificar el precio de un libro.
Mensaje de error.
11- Cambie la fecha y hora del sistema a "sabado 9 hs.". Actualice el precio de un libro
12- Realice un "select" sobre "libros" y sobre "control" para verificar que se han cargado los datos
correspondientes.
13- Cambie la fecha y hora del sistema a "martes 11:30 hs.". Actualice el precio de un libro
14- Realice un "select" sobre "libros" y sobre "control" para verificar que se han cargado los datos
correspondientes.
15- Cambie la fecha y hora del sistema a "domingo 18:30 hs.". Intente borrar un libro.
Mensaje de error.
16- Cambie la fecha y hora del sistema a "miercoles 15 hs.". Intente borrar un libro.
Mensaje de error.
17- Cambie la fecha y hora del sistema a "sábado 11:55 hs.". Borre un libro
18- Realice un "select" sobre "libros" y sobre "control" para verificar que se han cargado los datos
correspondientes.