Trigger Procedimientos Almacenados En Oracle
Enviado por mauriciofci • 6 de Febrero de 2013 • 3.157 Palabras (13 Páginas) • 1.020 Visitas
APLICACIÓN A LA BASE DE DATOS
INFORME DE TRIGGER, PROCEDIMIENTOS ALMACENADOS Y CURSORES
Alumno:
LENIN MAURICIO ANDALUZ GRANDA
Catedrático:
ING. ROBERT MAREIRA
INTRODUCCION
Un "trigger" (disparador o desencadenador) es un bloque de código que se ejecuta automáticamente cuando ocurre algún evento (como inserción, actualización o borrado) sobre una determinada tabla (o vista); es decir, cuando se intenta modificar los datos de una tabla (o vista) asociada al disparador.
Se crean para conservar la integridad referencial y la coherencia entre los datos entre distintas tablas; para registrar los cambios que se efectúan sobre las tablas y la identidad de quien los realizó; para realizar cualquier acción cuando una tabla es modificada; etc.
Si se intenta modificar (agregar, actualizar o eliminar) datos de una tabla asociada a un disparador, el disparador se ejecuta (se dispara) en forma automática.
La diferencia con los procedimientos almacenados del sistema es que los triggers:
no pueden ser invocados directamente; al intentar modificar los datos de una tabla asociada a un disparador, el disparador se ejecuta automáticamente.
no reciben y retornan parámetros.
son apropiados para mantener la integridad de los datos, no para obtener resultados de consultas.
Uso de los triggers
Los disparadores pueden emplearse para muchas cosas diferentes, incluyendo:
• El mantenimiento de restricciones de integridad complejas, que no sean posibles con las restricciones declarativas definidas en el momento de crear la tabla.
• La auditoría de la información contenida en una tabla, registrando los cambios realizados y la identidad del que los llevó a cabo.
• El aviso automático a otros programas de que hay que llevar a cabo una determinada acción, cuando se realiza un cambio en una tabla.
Sintaxis general de trigger
La sintaxis general para crear un disparador es:
Los triggers se crean con la instrucción "create trigger" seguido del nombre del disparador. Si se agrega "or replace" al momento de crearlo y ya existe un trigger con el mismo nombre, tal disparador será borrado y vuelto a crear.
"MOMENTO" indica cuando se disparará el trigger en relación al evento, puede ser BEFORE (antes), AFTER (después) o INSTEAD OF (en lugar de). "before" significa que el disparador se activará antes que se ejecute la operación (insert, update o delete) sobre la tabla, que causó el disparo del mismo. "after" significa que el trigger se activará después que se ejecute la operación que causó el disparo. "instead of" sólo puede definirse sobre vistas, anula la sentencia disparadora, se ejecuta en lugar de tal sentencia (ni antes ni después).
"EVENTO" especifica la operación (acción, tipo de modificación) que causa que el trigger se dispare (se active), puede ser "insert", "update" o "delete"; DEBE colocarse al menos una acción, puede ser más de una, en tal caso se separan con "or". Si "update" lleva una lista de atributos, el trigger sólo se ejecuta si se actualiza algún atributo de la lista.
"on NOMBRETABLA" indica la tabla (o vista) asociada al disparador;
"NIVEL" puede ser a nivel de sentencia o de fila. "for each row" indica que el trigger es a nivel de fila, es decir, se activa una vez por cada registro afectado por la operación sobre la tabla, cuando una sola operación afecta a varios registros. Los triggers a nivel de sentencia, se activan una sola vez (antes o después de ejecutar la operación sobre la tabla). Si no se especifica, o se especifica "statement", es a nivel de sentencia.
"CUERPO DEL DISPARADOR" son las acciones que se ejecutan al dispararse el trigger, las condiciones que determinan cuando un intento de inserción, actualización o borrado provoca las acciones que el trigger realizará. El bloque se delimita con "begin... end".
Entonces, un disparador es un bloque de código asociado a una tabla que se dispara automáticamente antes o después de una sentencia "insert", "update" o "delete" sobre la tabla.
Se crean con la instrucción "create trigger" especificando el momento en que se disparará, qué evento lo desencadenará (inserción, actualización o borrado), sobre qué tabla (o vista) y las instrucciones que se ejecutarán.
Los disparadores pueden clasificarse según tres parámetros:
el momento en que se dispara: si se ejecutan antes (before) o después (after) de la sentencia.
el evento que los dispara: insert, update o delete, según se ejecute una de estas sentencias sobre la tabla.
nivel: dependiendo si se ejecuta para cada fila afectada en la sentencia (por cada fila) o bien una única vez por sentencia independientemente de la filas afectadas (nivel de sentencia).
Consideraciones generales:
- Las siguientes instrucciones no están permitidas en un desencadenador:
• create database
• alter database
• drop database
• load database
• restore database
• load log, reconfigure
• restore log
• disk init
• disk resize.
Se pueden crear varios triggers para cada evento, es decir, para cada tipo de modificación (inserción, actualización o borrado) para una misma tabla. Por ejemplo, se puede crear un "insert trigger" para una tabla que ya tiene otro "insert trigger".
Componentes de un disparador
Los componentes de un disparador son:
• el nombre
• el suceso de disparo
• el cuerpo.
• La cláusula WHEN es opcional.
Nombres de disparadores
El espacio de nombres para los disparadores es diferente del de otros subprogramas. El espacio de nombres es el conjunto de identificadores válidos que pueden emplearse como nombres de un objeto.
Los disparadores existen en un espacio de
...