En este artículo, exploraremos cómo crear y trabajar con desencadenantes en SQL Server.
Hay tres tipos principales de desencadenantes en SQL Server:
Exploremos estos desencadenantes en esta guía.
Disparadores de DML de SQL Server
Los desencadenantes del lenguaje de manipulación de datos o DML son un tipo de desencadenantes que se disparan en respuesta a una operación de inserción, actualización y eliminación en una tabla o vista. Los disparadores de DML se ejecutarán cuando se ejecute cualquier operación válida, si alguna fila se ve afectada.
Crear dml después del activador
En SQL Server, puede crear un disparador de DML usando la instrucción Crear activador.
Crear gatillo schema_name.gatillo_nameDesglosemos la sintaxis anterior:
Para aprender a crear y usar un disparador DML, tomemos un ejemplo práctico.
Cree una base de datos de muestra e inserte los datos proporcionados en el conjunto de consultas que se muestran a continuación:
-- Crear base de datos de muestraUna vez que tenemos los datos de la muestra, podemos continuar y crear un activador DML para disparar en una operación de actualización sobre la tabla.
Considere el ejemplo que se muestra a continuación:
-- Crear tabla para almacenar el historial de actualizacionesLa consulta anterior creará un disparador que dispara cuando realicemos una actualización sobre la tabla. Para probar el activador, podemos ejecutar una actualización como:
-- tabla de actualizaciónDespués de la ejecución, podemos verificar si el desencadenante funcionó seleccionando las columnas en la tabla ModifiedDate.
-- Verifique la tabla de data modificadaEn SSMS, puede ver los desencadenantes en una mesa expandiendo la opción de desencadenantes:
Crear en lugar de desencadenantes
El otro tipo de desencadenantes de DML en SQL Server es en lugar de desencadenantes. Estos son el tipo de desencadenantes que se ejecutan en lugar de la instrucción DML. Por ejemplo, si especificamos una instrucción Eliminar, podemos usar los desencadenantes en lugar de ejecutar antes de la operación.
La sintaxis para crear un disparador en lugar de se muestra:
Crear gatillo schema_name.gatillo_namePor ejemplo, la consulta a continuación crea un disparador que muestra un mensaje cuando se realiza una operación de inserción en la tabla.
-- crear en lugar de disparadorUna vez que ejecutamos la consulta anterior, debemos obtener un mensaje que indique que no podemos realizar un inserto en la tabla.
ErrorNo puedes insertar en esta tabla
Disparadores de DDL SQL
DDL o el lenguaje de definición de datos son disparadores que responden a los eventos al servidor o base de datos en lugar de una tabla. Los desencadenantes de DDL responderán a eventos como Drop, Grant, Deny, Revoca, Actualizar estadísticas, Crear y Alterar.
Crear desencadenantes DDL
La sintaxis para crear un disparador DDL es como se muestra:
Crear disparador gatillo_namePodemos desglosar la sintaxis como:
La consulta de ejemplo a continuación crea un disparador DDL que se dispara cuando se emite una declaración de tabla de caída.
-- Crear disparador DDLUna vez que ejecutemos un evento de caída en la base de datos, el activador mostrará información del evento utilizando la función eventData ().
Podemos probar el disparador:
-- desencadenante de pruebaLa consulta debe devolver la información XML sobre el evento como:
En SSMS, puede ver los desencadenantes expandiendo los desencadenantes de la base de datos bajo programabilidad en su base de datos de destino.
Habilitar/desactivar desencadenantes
SQL Server le permite habilitar y deshabilitar los desencadenantes. Para habilitar un disparador en una tabla, use la consulta como:
Habilitar Trigger update_trigger en ventas;Donde update_trigger representa el nombre del activador y las ventas representan el nombre de la tabla.
También puede habilitar todos los desencadenantes en una mesa como:
Habilitar disparador todo en table_name;Para habilitar el activador de la base de datos, use la consulta:
Habilitar disparador drop_ddl_trigger en ventas;Aquí, drop_ddl_trigger representa el nombre de activación y las ventas representan la base de datos.
Para habilitar todos los desencadenantes de la base de datos, use la consulta:
habilitar el activador todo en las ventas;Para deshabilitar una tabla o un activador de la base de datos, reemplace la palabra clave de habilitar con ☺️.
Eliminar disparador
Para eliminar un desencadenante, puede usar la instrucción de caída como se muestra:
Drop disparador si existe Trigger_name;SQL Server muestra todos los desencadenantes
Para ver todos los desencadenantes en una instancia de SQL Server, use la consulta como se muestra:
Seleccionar nombre, type_desc, is_disable, is_instead_of_trigger de sys.desencadenantes donde tipo = 'tr'La consulta debe devolver todos los desencadenantes en la instancia de SQL Server como:
Se dispara el inicio de sesión del servidor SQL
Los disparadores de inicio de sesión son un tipo de desencadenantes que se ejecutan cuando ocurre una actividad de inicio de sesión en el servidor. Estos tipos de desencadenantes se ejecutan después de una autenticación exitosa pero antes de crear una sesión de usuario. Dado que se utilizan para manejar la actividad de inicio de sesión, las creamos a nivel de servidor, como se muestra en el ejemplo a continuación:
PRECAUCIÓN: El disparador a continuación puede evitar inicios de sesión futuros al servidor. Asegúrese de eliminar antes de iniciar sesión.
PRECAUCIÓN - ☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️.
-- Crear disparador de inicio de sesiónEl disparador mostrará un mensaje cuando el usuario inicie sesión en el servidor.
Conclusión
En esta guía, entendió varios tipos de desencadenantes, cómo crear, habilitar, deshabilitar, eliminar y ver desencadenantes en SQL Server.