Descripción de los desencadenadores DML

Microsoft SQL Server proporciona dos mecanismos principales para hacer cumplir las reglas de negocios y la integridad de los datos: restricciones y desencadenadores. Un desencadenador es un tipo especial de procedimiento almacenado que se inicia automáticamente cuando se ejecuta un evento de lenguaje. SQL Server incluye tres tipos generales de desencadenadores: DML, DDL y de inicio de sesión.

Los desencadenadores DDL se invocan cuando tiene lugar un evento de lenguaje de definición de datos (DDL) en el servidor o la base de datos.Se explican con mayor detalle en Desencadenadores DDL. Los desencadenadores de inicio de sesión activan procedimientos almacenados en respuesta a un evento LOGON. Este evento se genera cuando se establece una sesión de usuario con una instancia de SQL Server. Para obtener más información, vea Desencadenadores logon.

Los desencadenadores DML se invocan cuando un evento de lenguaje de manipulación de datos (DML) tiene lugar en la base de datos. Los eventos DML incluyen instrucciones INSERT, UPDATE o DELETE que modifican datos en una tabla o vista especificada. Un desencadenador DML puede consultar otras tablas e incluir instrucciones Transact-SQL complejas. El desencadenador y la instrucción que lo activa se tratan como una sola transacción, que puede revertirse desde el desencadenador. Si se detecta un error grave (por ejemplo, no hay suficiente espacio en disco), se revierte automáticamente toda la transacción.

Los desencadenadores DML tienen varias utilidades:

  • Pueden realizar cambios en cascada mediante tablas relacionadas de la base de datos; sin embargo, estos cambios pueden ejecutarse de manera más eficaz mediante restricciones de integridad referencial en cascada.

  • Pueden proteger contra operaciones INSERT, UPDATE y DELETE incorrectas o dañinas, y exigir otras restricciones que sean más complejas que las definidas con restricciones CHECK.

    A diferencia de éstas, los desencadenadores DML pueden hacer referencia a columnas de otras tablas. Por ejemplo, un desencadenador puede utilizar una instrucción SELECT de otra tabla para comparar con los datos insertados o actualizados y para realizar acciones adicionales, como modificar los datos o mostrar un mensaje de error definido por el usuario.

  • Pueden evaluar el estado de una tabla antes y después de realizar una modificación de datos y actuar en función de esa diferencia.

  • Varios desencadenadores DML del mismo tipo (INSERT, UPDATE o DELETE) en una tabla permiten realizar distintas acciones en respuesta a una misma instrucción de modificación.