Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Descencadenantes PDF
Descencadenantes PDF
DESENCADENANTES O TRIGGERS
I. OBJETIVOS
Comprender el concepto de trigger.
Estudiar los componentes del trigger
Conocer los tipos de triggers
Razonar la forma de utilización del trigger
DESENCADENADORES
LA SINTAXIS
CREATE OR REPLACE TRIGGER Nombre
TIEMPO {BEFORE|AFTER} evento1 [ OR evento2 OR evento 3….] --
instrucción
ON TABLA
[For Each Row]
[WHEN Condicion]
DECLARE
Definición de variables
BEGIN
Instrucciones del desencadenador
EXCEPTION
END;
Donde:
NOMBRE
Es el nombre del desencadenador.
Lab. Administración de Base de Datos 1 Prof. Elvira Fernández
(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERIA DE SISTEMAS
TIEMPO
Se utiliza para indicar si las instrucciones del desencadenador se deben
ejecutar antes o después de actualizarse la tabla, es decir, antes o después
que se haya ejecutado la instrucción Insert, Update o Delete.
BEFORE AFTER
Le indica a oracle que las Le indica a oracle que las
instrucciones del desencadenador instrucciones del desencadenador
se deben ejecutar antes de se deben ejecutar después de
actualizarse la tabla. actualizarse la tabla.
INSTRUCCIÓN
Es la instrucción Insert, Update y/o Delete que hará que se ejecuten las
instrucciones del desencadenador.
TABLA
Es el nombre de la tabla que debe de estar asociada al desencadenador, es
decir, la tabla donde debe ejecutarse Insert, Update y/o Delete para que
las instrucciones del desencadenador se ejecuten.
ELIMINAR UN DESENCADENADOR
La instruccion Drop Trigger permite eleiminar fisicamente un desencadenador de la
base de datos oracle.
Sisntaxis:
Drop trigger nombre
III. DESARROLLO
Ejemplo01 : Crear un desencadendor tr_insertar_proveedor, de tal manera que utilizando
un cursor muestre los registros principales de la tabla despues de agregarse (insert) un
nuevo registro en dicha tabla.
En forma predeterminada las instrucciones del desencadenador se ejecutan sólo una vez
cunando se aplica la instrucción insert, update o delete en la tabla indicada.
Si desea que las instrucciones del desencadenador se ejecuten por cada registro que se
agrega, actualiza o elimina, debe utilizar en la creación del desencadenador el parametro:
For Each Row (por cada fila o registro) .
EJEMPLO02
Las siguientes instrucciones crean un desencadenador llamado Tr_actualizaProveedor que
muestra una sola vez el mensaje: registro actualizado cada vez que se utiliza la instrucción
update en la tabla proveedor sin importar la cantidad de registros que se actualizan.
Salida
Ejercicio 02: actualice el campo fax de la tabla proveedor.Para todos los proveedores el
mismo numero. Verifique los resultados.
Utilizando la siguiente sintaxis podemos indicar a oracle que sólo se ejecuten las
instrucciones del desencadenador cuando se actualicen determinados campos.
Las variables old y new se crean de tipo registro y con la misma estructura de la tabla
utilizada en el desencadenador y cada una de ellas almacen un registro.
Variable old
El contenido de esta variable depende de la instrucción que genera o ejecuta el
desencadenador.
Delete
si la instrucción que genera el desencadendor es delete, la variable old almacena los datos
del registro eliminado. De esta manera podemos saber y leer los datos del registro
eliminado.
Update
si la instrucción que genera el desencadendor es update, la variable old almacena los datos
del registro actualizado, pero, con los datos anteriores, es decir, son los datos antes de
actualizarse. De esta manera podemos saber qué registro se actualizó y qué datos o campos
se actualizaron.
Insert
La variable old no almacena ningún registro cuando la instrucción que genera el
desencadenador es insert, es decir , no se utiliza.
Variable New
El contenido de esta variable depende de la instrucción que genera o ejecuta el
desencadenador.
Delete
La variable new no almacena ningún registro cuando la instrucción que genera el
desencadenador es delete, es decir, no se utiliza.
Update
si la instrucción que genera el desencadendor es update, la variable new almacena los datos
del registro actualizado con los nuevos datos. De esta manera podemos saber qué registro
se actualizó y qué datos o campos se actualizaron.
Insert
si la instrucción que genera el desencadendor es insert, la variable new almacena el nuevo
registro agregado a la tabla. De esta manera podemos saber y leer los datos del nuevo
registro.
Para referirse a un campo de las variables old o new se utiliza la siguiente sintaxis:
Lab. Administración de Base de Datos 6 Prof. Elvira Fernández
(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERIA DE SISTEMAS
:nombre_de_la variable.nombre_campo
Nota : para poder utilizar las variables old y new dentro de un desencadenador debemos
indicar que las instrucciones se deben ejecutar registro por registro.
EJEMPLO03
Se crea un desencadenador llamado Tr_actualizaEmpleado_AntesYDespues, cuyas
instrucciones se ejecutarán registro por registro y antes de actualizarse algún registro de la
tabla empleados. Este desencadenador muestra los datos de los registros antes y despues de
actualizarse.
EJEMPLO04
Se crea un desencadenador llamado Tr_verifica_nombre_empleado, cuyas instrucciones se
ejecutarán antes de insertar algún registro en la tabla empleados. Este desencadenador no
permite registrar al empleado si se ingresa un valor en el campo nombre =“system”(ya que
system es un nombre reservado).
EJERCICIO 05: Insertar un registro en la tabla empleado cuyo campo nombre sea igual a
“System”. Que sucede?
.
Utilizando la siguiente sintaxis podemos indicar a oracle que sólo se ejecuten las
instrucciones del desencadenador cuando se cumpla una condición general establecida al
crearlo.
Condición
Es aquella que se debe cumplir para que se pueda ejecutar las instrucciones del
desencadenador
EJEMPLO04
El siguiente ejemplo utiliza la tabla empleados y crea un desencadenador con una
condición general.
Las siguientes instrucciones de ejemplo crean al desencadenador cuyas
instrucciones se ejecutan cuando se actualiza un sueldo básico mayor a 800 soles
Ejemplo:
Alter Trigger Tr_actualizaProveedor Disable
Describe user_triggers
3. Crear un desencadenante, que permita actualizar el stock cada vez que se elimina
un pedido de una venta realizada.mostrar el stock antes y despues.