Revista Opinión

Sql-server trigger

Publicado el 16 marzo 2019 por Carlosgu82

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.


Volver a la Portada de Logo Paperblog