1.¿Qué es un Trigger y para qué sirve?
Un “Trigger” (disparador o desencadenador) es un tipo de Procedimiento Almacenado que se ejecuta cuando se intenta modificar los datos de una tabla (o vista).
Si se intenta modificar (agregar, actualizar o eliminar) datos de una tabla en la que se definió un disparador para alguna de estas acciones (inserción, actualización y eliminación), el disparador se ejecuta (se dispara) en forma automática.
Un trigger se asocia a un evento (inserción, actualización o borrado) sobre una tabla.
2.¿Cuáles son los beneficios de usar Trigger?
- Ventajas de las restricciones:
- Las restricciones (y reglas) son más rápidas que los triggers
- Las restricciones no requieren codificación adicional
- Es mejor para chequear datos antes de ingresarlos a la base de datos
- Ventajas de los triggers:
- Muy flexible
- Los triggers pueden hacer cualquier cosa que se pueda codificar
- Mejor para las reglas complejas del negocio que no se pueden expresar como restricciones referenciales tales como actualizaciones o borrados en cascada
3.¿Donde se almacenan los Trigger?
Un trigger se asocia a un evento (inserción, actualización o borrado) sobre una tabla.
4¿Para qué tipo de instrucciones se pueden definir un Trigger?
Si se intenta modificar (agregar, actualizar o eliminar) datos de una tabla en la que se definió un disparador para alguna de estas acciones (inserción, actualización y eliminación), el disparador se ejecuta (se dispara) en forma automática.
5.Indique los casos en que se deben usar los Trigger’s
- Hacer modificaciones en cascada sobre tablas relacionadas
- Deshacer cambios que violan la integridad de los datos
- Forzar restricciones que son muy complejas para reglas y restricciones
- Mantener datos duplicados
- Mantener columnas con datos derivados
- Hacer ajustes de registros
6.¿Cuándo se activa un Trigger?
- Cuando se modifica un dato en una tabla que tiene declarado un Trigger para esa sentencia, el Trigger se “dispara”
- El trigger se dispara una vez, independientemente del número de filas afectadas
- El trigger se dispara aunque no hayan filas afectadas
- Un trigger es parte de la transacción que causa el disparo
- El trigger puede deshacer:
- Así mismo solamente
- Así mismo y la sentencia que causa el disparo
- La transacción total
7.¿Cual es la función de la tabla INSERTED?
- inserted y deleted son dos tablas que se crean automáticamente cada vez que se dispara un trigger
- inserted almacena cualquier fila que se vaya a añadir a la tabla
- deleted almacena cualquier fila que se vaya a borrar de la tabla
- La instrución insert adiciona filas a la tabla inserted
8.¿Cual es la funcion de la tabla DELETED?
- La instruccion delete adiciona filas a la tabla deleted
9.¿Cómo crear un Trigger?
- Sintaxis :
create trigger nombre_trigger
on nombre_tabla
for {insert | update | delete} [, {insert | update | delete} …]
as
instrucciones
10.¿Cómo borrar un Trigger?
Sintaxis simplificada:
drop trigger nombre_trigger
11.¿Cómo ejecutar un Trigger?
El trigger es una “subrutina”, igual que un Procedimiento Almacenado, con la diferencia de que se “conecta” a una operación de inserción, modificación o borrado en una tabla de la base de datos. Para ejecutarlo, basta realizar sobre la tabla la operación correspondiente. La operación se realiza, y a continuación se ejecuta el trigger. Como el Trigger se ejecuta dentro de la misma transacción que la operación original, puede hacer un “rollback” y eso impide que se realice la operación original que lo disparó.
12.Explique las diferencias entre Restricciones y Trigger en una Base de Datos
Los disparadores, a diferencia de las restricciones “check”, pueden hacer referencia a campos de otras tablas.
Por ejemplo, puede crearse un trigger de inserción en la tabla “ventas” que compruebe el campo “stock” de un artículo en la tabla “artículos”; el disparador controlaría que, cuando el valor de “stock” sea menor a la cantidad que se intenta vender, la inserción del nuevo registro en “ventas” no se realice.
Los triggers se ejecutan DESPUES de la ejecución de una instrucción “insert”, “update” o “delete” en la tabla en la que fueron definidos.
Las restricciones se comprueban ANTES de la ejecución de una instrucción “insert”, “update” o “delete”.
Por lo tanto, las restricciones se comprueban primero, si se infringe alguna restricción, el desencadenador no llega a ejecutarse.