Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los triggers pueden ser casados para declaran reglas de integridad referencial para
forzar el cumplimiento de reglas de negocios o para auditar datos. El código de un triggers que
es llamado cuerpo del triggers es hecho o codificado mediante sentencias propias de Orade, la
ejecución de triggers es transparente al usuario y esto se ejecuta cuando ocurre algún evento
en la base de datos.
Un usuario puede crear triggers sobre una tabla, entonces el usuario deberá tener
privilegio para alterar dichas tablas. Además los triggers se ejecutan y codifican desde un
usuario por tanto un usuario deberá tener los siguientes privilegios del sistema para trabajar
con triggers, deberá tener privilegios para modificar triggers y de esta forma poder cambiar o
eliminar el código del mismo.
En resumen un usuario deberá tener los siguientes privilegios que contiene el ROL
RESOURCE.
ARTER TABLE
CREATE TRIGGER
ALTER ANY TRIGGER
Los triggers en general hacen referencia al trabajo con tablas es por esto que un
usuario debe tener privilegios sobre las tablas que maneja el trigger.
Cabe indicar que los privilegios necesarios para las transacciones que ejecuta el
triggers sobre las tablas deben ser asignadas directamente al creador del trigger y no deben
ser asignadas mediante roles.
- TRIGGERS A NIVEL DE FILA: Los triggers a nivel de fila se ejecutan para cada fila en
una transacción, es decir realizaron una acción específica sobre cada tupla (fila) que
interviene en una transacción este tipo de triggers se lo identifica porque contienen la
sentencia FOR EACH ROW dentro del comando. CREATE TRIGGERS.
- TRIGGERS ANTES Y DESPUÉS DE: Los triggers ocurren a causa de eventos y los
triggers pueden dispararse inmediatamente antes o después de que ocurra un evento,
es decir pueden dispararse antes o después de insertar, actualizar o borrar datos.
SEXTO NIVEL
BASE DE DATOS II 17
Para especificar cada uno de los triggers para que se ejecuten antes o después se
usan las cláusulas: BEFORE o AFTER seguidos de la acción que se ejecutara sobre la
tabla y esto luego del comando CREATE TRIGGER.
SEXTO NIVEL
BASE DE DATOS II 18
Este ejemplo ilustra el uso de las palabras claves NEW y OLD para referirse a los
nuevos y viejos valores de una columna.
En la línea 1 Se crea un triggers llamado cuenta BEF UPD_ROW, de forma tal que
se especifica en el nombre la tabla sobre la que actúa y las acciones o el tipo del triggers que
se crea; así por ejemplo si creo el trigger:
AFTER DELETE
Cuenta_AFT_DEL Este debería ser el nombre.
En la línea 3 especifica que el triggers actuará sobre cada fila de la tabla cuenta.
La clausula WHEN adiciona un criterio más amplio sobre las condiciones del disparo
para el triggers en este caso esta condición especifica que el triggers se disparará cuando el
saldo nuevo supere en un 10 % al saldo anterior, además de el trigger se ejecutará cuando se
intente actualizar una fila en la tupla cuenta.
Cuando se desee especificar valores nuevos o viejos para un campo dentro del cuerpo
del triggers estos deben estar precedidos de 2 puntos.
Dentro del cuerpo de este triggers se almacenan datos antiguos de una transacción
dentro de la tabla de auditoria, se supone que esta tabla de Auditoria ya este creada y que
además el propietario del trigger tiene privilegios del inserción de datos sobre la misma.
Por último este trigger se disparará cuando se intente actualizar valores en la tabla
cuenta y los saldos o el saldo supere en un 10% al anterior. Este no actuará sobre cambios
hechos en la tabla de auditoria Cuenta_auditoria.
El cuerpo del trigger especifica que se inserte dentro de una tabla de auditoria que
previamente debe existir, una valor antiguo a la transacción (fecha, cantidad, persona), cuando
se utiliza las palabras claves OLD o NEW dentro del cuerpo del trigger se deben especificar
anteponiendo ":"
: OLD : NEW
Cuando se ejecutan varios comandos dentro de una tabla, por ejemplo. Inserción,
actualización, borrado, todas estas acciones pueden ser combinadas dentro de un solo
triggers.
El ejemplo a continuación muestra un triggers que se ejecuta siempre que ocurra una
inserción o una actualización de datos dentro de la tabla libro_mayor. El cuerpo del triggers se
dividirá en dos porciones de acuerdo a la acción que se realice (actualización- inserción).
SEXTO NIVEL
BASE DE DATOS II 19
SEXTO NIVEL