Triggers tarea de la u

14
UNICAH UNIVERSIDAD CATÓLICA DE HONDURAS Triggers y/o Desencadenadores Base de Datos II 10/12/2014 1

description

una tarea mas

Transcript of Triggers tarea de la u

Triggers

UNICAHUNIVERSIDAD CATLICA DE HONDURAS Triggers y/o DesencadenadoresBase de Datos II10/12/201411TRIGGEREs una clase especial de procedimiento almacenado que se ejecuta automticamente cuando se produce un evento en el servidor de bases de datos (vista tabla).

SQL Server permite crear varios desencadenadores para una instruccin especfica.

Un desencadenador se crea solamente en la base de datos actual; sin embargo, puede hacer referencia a objetos que estn fuera de la base de datos actual.Si se especifica el nombre del esquema del desencadenador hay que calificar tambin el nombre de la tabla o vista.

10/12/20142Los principales TRIGGERS utilizados en SQL SERVER:

INSTEAD OF AFTER

AFTER: Ocurren despus de que haya pasado un INSERT, un UPDATE o un DELETE, sobre el objeto (es decir; la tabla vista).

Los TRIGGERS AFTER son reactivos es decir, esperan a que se realice la eliminacin para poder iniciar el procedimiento.

INSTEAD OF: cancelan la accin desencadenadora, es decir, si la invocacin del TRIGGER fue hecha por un INSERT, un UPDATE o un DELETE, este INSERT, UPDATE O DELETE, es cancelado para hacer una nueva accin establecida en el TRIGGER. 10/12/20143Para revisar si X tabla ya tiene algn TRIGGER, utilizamos el procedimiento almacenado:

Sp_helptrigger (Nombre Tabla)

Cuando eliminamos DATOS en una tabla se crea una tablatemporal, llamada DELETED, que guarda los valores antiguosnuevos de las filas que la accin del usuario puede cambiar.

10/12/20144Funcionamiento de un desencadenador DELETEInstruccin DELETE en tabla condesencadenador DELETE

10/12/20145Funcionamiento de un desencadenador DELETEInstruccin DELETE en tabla condesencadenador DELETE

10/12/201466Funcionamiento de un desencadenador DELETEInstruccin DELETE en tabla condesencadenador DELETE

10/12/201477Sintaxis de after "after": el trigger se dispara cuando las acciones especificadas (insert, delete y/o update) son ejecutadas; todas las acciones en cascada de una restriccin "foreign key" y las comprobaciones de restricciones "check" deben realizarse con xito antes de ejecutarse el trigger. Es la opcin por defecto si solamente colocamos "for" (equivalente a "after").

La sintaxis es:

create trigger NOMBREDISPARADORon NOMBRETABLAafter | for-- son equivalentesACCION-- insert, update o delete as SENTENCIAS

10/12/20148Sintaxis de instead of"instead of": sobreescribe la accin desencadenadora del trigger. Se puede definir solamente un disparador de este tipo para cada accin (insert, delete o update) sobre una tabla o vista.

Sintaxis:

create triggre NOMBREDISPARADOR on NOMBRETABLA o VISTA instead of ACCION-- insert, update o delete as SENTENCIAS10/12/20149Componentes principales

La estructura bsica de un trigger es:Llamada de activacin: es la sentencia que permite "disparar" el cdigo a ejecutar.Restriccin: es la condicin necesaria para realizar el cdigo. Esta restriccin puede ser de tipo condicional o de tipo nulidad.Accin a ejecutar: es la secuencia de instrucciones a ejecutar una vez que se han cumplido las condiciones iniciales.

10/12/201410Usos de los TriggersSon usados para mejorar la administracin de la Base de datos, sin necesidad de contar con que el usuario ejecute la sentencia de SQL. Adems, pueden generar valores de columnas, previene errores de datos, sincroniza tablas, modifica valores de una vista, etc. Permite implementar programas basados en paradigma lgico (sistemas expertos, deduccin).

10/12/201411Efectos y caractersticas

No aceptan parmetros o argumentos (pero podran almacenar los datos afectados en tablas temporales)No pueden ejecutar las operaciones COMMIT o ROLLBACK por que estas son parte de la sentencia SQL del disparador (nicamente a travs de transacciones autnomas)Pueden causar errores de mutaciones en las tablas, si se han escrito de manera deficiente.10/12/201412A continuacin: Ejemplos de TRIGGER en la base de datos10/12/201413Gracias por su atencin.10/12/201414