Disparadores de SQL: una guía básica

Los desencadenantes son objetos de base de datos en SQL Server. Técnicamente, son una clase especial de llamadas de funciones que responden a ciertas operaciones de bases de datos.

Esta guía esencial le proporcionará información detallada sobre los desencadenantes SQL, que pueden ser muy útiles en su profesión.¡Empecemos!

Contents
  1. ¿Qué son los desencadenantes SQL?
  2. Sintaxis:
  3. CLR disparadores – CLR representa el tiempo de ejecución del lenguaje común. Los desencadenantes de CLR son realmente un subconjunto único de desencadenantes construidos principalmente en el CLR dentro de la tecnología . NET. Estos desencadenantes son útiles si un desencadenante necesita realizar muchos cálculos o debe asociarse con una entidad que no sea SQL.
  4. He creado una tabla para almacenar datos de estudiantes. Y aquí está el comando para describir la estructura de la tabla. Aquí «estudiante» es el nombre de la tabla que he dado.
  5. En este caso, la instrucción de activación se ejecutará automáticamente cuando inserte datos en la tabla de estudiantes. El desencadenante calcula los grados totales de cada estudiante. Ahora veamos si el disparador se llama con una instrucción Seleccionar.
  6. ALTER TABLE nombre_tabla DISABLE TRIGGER nombre_trigger ALTER TABLE nombre_tabla HABILITAR TRIGGER nombre_trigger
  7. Consulta para habilitar o deshabilitar todos los disparadores en una tabla
  8. Solicitud para eliminar o eliminar un disparador
  9. Cada vez que se elimina un activador, los datos asociados se eliminan de la tabla de datos sys. objects.
  10. Las restricciones de integridad se pueden implementar en las bases de datos mediante disparadores.
  11. Los factores desencadenantes deben documentarse con precisión.
  12. Incluso un problema menor con un activador puede provocar errores lógicos en la aplicación.
  13. Los desencadenantes también regulan el patrón de actualización que la base de datos puede aceptar. Es extremadamente beneficioso mantener restricciones de integridad de datos en un sistema de base de datos si no existen claves de restricción SQL, principalmente la clave principal y la clave extranjera.

¿Qué son los desencadenantes SQL?

La palabra «disparador» describe la declaración de que el servidor ejecuta automáticamente una consulta cada vez que cambia el contenido de la base de datos.

Un desencadenante es un grupo de consultas SQL con nombres especiales que se almacenan en la memoria. Es un tipo especial de llamada de función que se invoca inmediatamente cada vez que ocurre algún evento de base de datos. Cada disparador tiene una tabla asignada.

Por ejemplo, se puede activar un disparador cada vez que se agrega una nueva columna a una tabla en particular o si se cambian ciertos registros.

Según Microsoft Developer Network, los desencadenantes son una clase especial de procedimientos almacenados. En una declaración de activación, primero definimos cuándo se debe ejecutar el disparador y luego especificamos la acción que se realizará después de que se active el disparador.

Sintaxis:

Crear gatillo gath trigger_name antes/después de insertar/actualizar/eliminar en tableName para cada fila establece operación [trigger_body];

Explicación de cada parámetro

  • Crear disparador gatillo_name: utilizado para crear un disparador o para cambiar el nombre de un gatillo existente.
  • Do/después: esta consulta se usa para determinar cuándo se ejecuta el disparador (antes o después de un evento específico).
  • Insertar/Update/Eliminar: describe la acción que queremos realizar en las tablas.
  • En TableName: aquí definimos el nombre de la tabla para configurar el disparador.
  • Para cada fila: esta declaración se refiere al disparador de fila, lo que significa que los desencadenantes se ejecutarán cada vez que se modifique la fila.
  • Trigger_body: especifica la acción que se realizará cuando se dispara el disparador.

Los desencadenantes son funciones almacenadas con identificadores distintivos que nos permiten reutilizar consultas que ya se han ejecutado y almacenado de forma segura en la memoria. Ahora intentemos entender por qué SQL los necesita.

Los desencadenantes se utilizan principalmente para regular la implementación del código cada vez que ocurre un evento. En otras palabras, usar desencadenantes es una opción ideal si necesita una determinada pieza de código para que se ejecute continuamente en respuesta a un evento determinado.

Iniciar sesión de inicio de sesión: cada vez que ocurre algún evento de inicio de sesión (inicio, inicio de sesión, logro, cierre), los desencadenantes de inicio de sesión se activan inmediatamente. Se ejecutan solo después del proceso de autenticación del usuario, incluso antes de que se inicie la transacción del usuario. Los disparadores de inicio de sesión no se activarán en caso de una falla de autorización.

Estos desencadenantes se pueden usar para registrar el historial de inicio de sesión o establecer límites de eventos para un inicio de sesión en particular, así como otras funciones de auditoría e identidad para conexiones del servidor.

CLR disparadores – CLR representa el tiempo de ejecución del lenguaje común. Los desencadenantes de CLR son realmente un subconjunto único de desencadenantes construidos principalmente en el CLR dentro de la tecnología . NET. Estos desencadenantes son útiles si un desencadenante necesita realizar muchos cálculos o debe asociarse con una entidad que no sea SQL.

Los desencadenantes DML y DDL se pueden crear en realidad habilitando la codificación de los desencadenantes CLR compatibles en las tecnologías . NET, incluidas Visual Basic, C#y F-Sharp.

Ejemplo de activación de SQL Server

Entendamos estos conceptos de activación con un ejemplo.

Primero, creemos una base de datos utilizando declaraciones SQL.

Crear base de datos TestDB; usar testdb;

Aquí he dado «TestDB» como el nombre de la base de datos. Y el siguiente paso es crear una tabla.

Crear estudiante de tabla (nombre Varchar (25), ID int (2), Maths int (2), física int (2), biología int (2), social int (2), total int (2));

He creado una tabla para almacenar datos de estudiantes. Y aquí está el comando para describir la estructura de la tabla. Aquí «estudiante» es el nombre de la tabla que he dado.

Estudiante descromente;

A continuación se muestra la estructura de la tabla que he creado.

+———+————-+——+—–+———+——+ |Campo |Tipo |NULL |Clave |Predeterminado |Extra |+———+————-+——+——+—–+——— + ——- + |nombre |Varchar (25) |SÍ |||NULL ||ID |int |SÍ |||NULL |||Matemáticas |int |int |SÍ |||NULL ||||Física |int |int |SÍ |||NULL ||||Biología |int ||SÍ |||NULL ||Social |int |SÍ ||NULL |int |SÍ |||NULL ||||+———+————-+——+—–+———+——+ 7 filas en el set (0. 00 segundos)

Después de crear la tabla, el siguiente paso es configurar el disparador. Intentemos usar el argumento antes de insertar.

El nombre del desencadenante que creé es «Marcas». Una vez que se ingresan las marcas de un estudiante en la tabla, el disparo a continuación intenta determinar automáticamente las marcas totales del alumno.

Cree marcas de activación antes de insertar en el estudiante para cada fila set new. total = new. maths+new. physics+new. biology+new. social;

Dado que necesitamos reemplazar los datos de la fila en lugar de trabajar con los datos antiguos, hemos definido el «total» utilizando el nuevo nombre de clase, y todas las expresiones posteriores tienen el prefijo con las nuevas palabras clave después del total usando el operador DOT. Ahora agregaremos valores a cada fila y veremos los resultados. Inicialmente, la calificación total es 0 para cada estudiante.

Insertar en valores de los estudiantes («George», 02, 99, 87, 92, 91, 91, 0); Insertar en valores de los estudiantes («James», 03, 91, 81, 94, 90, 0); Insertar en valores de los estudiantes («Harry», 04, 86, 70, 73, 73, 88, 0); Insertar en valores de los estudiantes («John», 05, 73, 89, 78, 92, 0); Insertar en valores de los estudiantes («Lisa», 01, 94, 75, 69, 79, 0);

En este caso, la instrucción de activación se ejecutará automáticamente cuando inserte datos en la tabla de estudiantes. El desencadenante calcula los grados totales de cada estudiante. Ahora veamos si el disparador se llama con una instrucción Seleccionar.

Seleccionar * de table_name;

Y aquí está la conclusión final.

seleccionar * del estudiante;+--------+------+-------+---------+---------+--------+ -------+ |nombre |ID |Matemáticas |Física |Biología |Social |Total |+--------+------+-------+---------+---------+---------+--------+-------+|George |2 |91 |81 |94 |90 |356 ||James |3 |86 |70 |73 |88 |317 |Harry |4 |73 |89 |78 |92 |332 |John |5 |94 |75 |69 |69 |79 |317 |Lisa |1 |99 |87 |92 |91 |369 |+--------+------+-------+---------+---------+--------+ -------+ 5 filas en el set (0. 00 seg)

En el resultado anterior, puede ver que todas las calificaciones de las asignaturas se agregan automáticamente para cada estudiante. Entonces, podemos concluir que el desencadenante fue invocado con éxito.

Operaciones de activación adicionales

Podemos realizar muchas operaciones usando desencadenantes. Algunos de ellos pueden ser simples y otros pueden ser un poco complejos, pero una vez que pasemos por las consultas, serán fáciles de entender. Usando las declaraciones Transact-SQL, puede habilitar, deshabilitar o eliminar los disparadores utilizando los siguientes comandos.

Consulta para verificar si existe un disparador específico o no

Este comando verifica el disparador especificado en toda la base de datos.

Seleccione * de [SYS]. [ARGGERS] DONDE [Nombre] = 'Trigger_Name'

Consulta para mostrar desencadenantes

Todos los activadores disponibles en la base de datos activa se mostrarán mediante la siguiente declaración.

MOSTRAR DISPARADORES;

Solicitud para desactivar un activador

El siguiente comando desactivará un disparador en la base de datos de trabajo.

DISABLE TRIGGER trigger_name EN LA BASE DE DATOS;

También puede especificar un nombre de tabla específico para deshabilitar el activador.

DISABLE TRIGGER trigger_name ON table_name;

mysql>Consulta para habilitar el activador

El siguiente comando desactiva primero un disparador específico que se ha definido para la tabla especificada en la base de datos activa y luego lo vuelve a habilitar.

ALTER TABLE nombre_tabla DISABLE TRIGGER nombre_trigger ALTER TABLE nombre_tabla HABILITAR TRIGGER nombre_trigger

Un disparador debe estar deshabilitado antes de intentar habilitarlo,

Consulta para habilitar o deshabilitar todos los disparadores en una tabla

Usando la instrucción SQL anterior, podemos desactivar o activar todos los disparadores en una tabla al mismo tiempo al sustituir «TODOS» en lugar de un nombre de disparador en particular.

ALTER TABLE table_name DISABLE TRIGGER ALL ALTER TABLE table_name HABILITAR TRIGGER TODO

Solicitud para eliminar o eliminar un disparador

Un disparador se puede eliminar eliminándolo o eliminando toda la tabla. Cada disparador asociado también se elimina cuando se elimina la tabla.

DROP TRIGGER [trigger_name];

Cada vez que se elimina un activador, los datos asociados se eliminan de la tabla de datos sys. objects.

Ventajas de los disparadores

Los disparadores son fáciles de crear y el disparador mismo puede llamar a funciones y métodos almacenados.

Los usuarios pueden implementar una auditoría simple con disparadores.

Desafortunadamente, no puede crear restricciones en entidades en sistemas de bases de datos utilizando SQL Server, aunque puede emular el efecto de las restricciones utilizando activadores.

Las restricciones de integridad se pueden implementar en las bases de datos mediante disparadores.

Cuando se requiere una validación masiva, en lugar de una validación línea por línea de los datos recién ingresados o modificados, los disparadores pueden ser útiles.

Desventajas de los disparadores

Los disparadores de SQL pueden no ser la mejor opción en algunas situaciones debido a sus limitaciones.

Los factores desencadenantes deben documentarse con precisión.

Debido a la ejecución simultánea de la base de datos, que puede no estar disponible para los componentes de la aplicación, la depuración de desencadenadores puede ser difícil.

Las declaraciones DML se vuelven más complejas cuando se utilizan disparadores.

Incluso un problema menor con un activador puede provocar errores lógicos en la aplicación.

Conclusión

Los desencadenantes son componentes muy útiles de Transact-SQL y SQL, y también pueden usarse en Oracle. El uso de desencadenantes es crucial cuando llaman a métodos almacenados. Estos desencadenantes de SQL nos permiten analizar el momento de la actividad y determinar cómo reaccionar a ella si es necesario. También podemos verificar si hay una tabla particular que está conectada al activador para recuperar datos.

La recursión se puede habilitar utilizando desencadenantes. Cada vez que un disparador en una tabla ejecuta un comando en la tabla principal, se dispara una segunda iteración del gatillo y esto se llama activación recursiva. Esto ayuda cuando se trata de resolver la correlación de identidad.

Los desencadenantes también regulan el patrón de actualización que la base de datos puede aceptar. Es extremadamente beneficioso mantener restricciones de integridad de datos en un sistema de base de datos si no existen claves de restricción SQL, principalmente la clave principal y la clave extranjera.

  • Espero que haya encontrado este artículo útil para aprender sobre los desencadenantes SQL.
  • Si desea aprender sobre bases de datos en detalle, aquí hay algunos recursos excelentes para aprender SQL y NoSQL.
  • toadmin. ru