sql >> Base de Datos >  >> RDS >> Database

Disparador en SQL

En este artículo, aprenderemos sobre el concepto de disparador en SQL y su implementación con la ayuda de un ejemplo.

Un disparador en el lenguaje de consulta estructurado es un conjunto de declaraciones de procedimiento que se ejecutan automáticamente cuando hay comentarios sobre ciertos eventos en la tabla de la base de datos. Los activadores se utilizan para proteger la integridad de los datos en la base de datos.

Veamos la siguiente situación para entender el concepto de disparador en SQL:

Supongamos que Supriya es el gerente de tecnología de la información en una empresa multinacional. Cuando se ingresa el registro de un nuevo empleado en la base de datos, debe enviar el mensaje de 'Felicitaciones' a cada nuevo empleado. Si hay cinco o seis empleados, Supriya puede hacerlo manualmente, pero si el número de empleados nuevos es más de mil, entonces en tal condición, tiene que usar el activador en la base de datos.

Por lo tanto, Supriya debe crear el activador en la tabla, que enviará automáticamente un mensaje de 'Felicitaciones' a los nuevos empleados una vez que su registro se inserte en la base de datos.

El disparador siempre se ejecuta con la tabla específica en la base de datos. Si eliminamos la tabla, todos los disparadores asociados con esa tabla también se eliminan automáticamente.

Los activadores en el lenguaje de consulta estructurado se llaman solo antes de que ocurran los eventos o después de que ocurran los eventos.

Solo tres eventos ocurren en el activador antes o después de los eventos:Insertar eventos, Actualizar eventos o Eliminar eventos.

1. INSERTAR evento :El evento de inserción ocurre cada vez que se inserta un nuevo registro en la tabla.

2. Evento de ACTUALIZACIÓN :Se produce un evento de actualización cada vez que se actualizan los registros existentes en la tabla.

3. ELIMINAR evento: El evento Eliminar ocurre cada vez que se elimina el registro de la tabla.

Tipos de activadores en el lenguaje de consulta estructurado

Los siguientes son los seis tipos de activadores utilizados en el lenguaje de consulta estructurado:

1. DESPUÉS DE INSERTAR Desencadenador:

El activador after insert se invoca en SQL después de que los registros se insertan en la tabla.

2. Activador DESPUÉS DE LA ACTUALIZACIÓN:

El activador posterior a la actualización se invoca en SQL después de que se actualicen los registros existentes en la tabla.

3. Desencadenador DESPUÉS DE ELIMINAR:

El activador posterior a la eliminación se invoca en SQL después de que el registro se elimine de la tabla.

4. ANTES DE INSERTAR Activador:

El disparador antes de insertar se invoca en SQL antes de que los registros se inserten en la tabla.

5. Activador ANTES DE LA ACTUALIZACIÓN:

El activador de actualización anterior se invoca en SQL antes de que se actualicen los registros existentes en la tabla.

6. ANTES DE ELIMINAR Activador:

El activador antes de eliminar se invoca en SQL antes de que el registro se elimine de la tabla.

Sintaxis del disparador en SQL:

CREATE TRIGGER Trigger_Name  

[BEFORE | AFTER]  [Insert | Update | Delete] 

ON [Table_Name] 

[FOR EACH ROW | FOR EACH COLUMN] 

AS 

Set of SQL Statement
  • En la sintaxis del disparador, tenemos que definir el nombre del disparador justo después de la palabra clave CREATE TRIGGER en la sintaxis.
  • Después del nombre del disparador, tenemos que definir qué disparador queremos invocar, el disparador anterior o la palabra clave del disparador posterior con el nombre del evento.
  • Luego, tenemos que mencionar el nombre de la tabla en la que se produjo el desencadenante.
  • Después del nombre de la tabla, debemos definir el disparador en el nivel de fila o el disparador en el nivel de columna.
  • Y al final, tenemos que escribir la instrucción SQL que actúa sobre los eventos que ocurren.

Ejemplo de disparador en SQL

Para comprender el concepto de activador en SQL, debemos crear una tabla en la que se ejecutará el activador.

La siguiente consulta crea la tabla Student en la base de datos SQL.

CREATE TABLE Student(

Student_rollno INT NOT NULL PRIMARY KEY,

FirstName varchar(40),

English_Marks INT,

Physics_Marks INT,

Chemistry_Marks INT,

Biology_Marks INT,

Maths_Marks INT,

Total_Marks INT,

Percentage INT);

La siguiente consulta muestra la estructura de la tabla Student:

Estudiante DESC;

Campo Tipo NULO Clave Predeterminado Extra
Student_RollNo INT NO PRI NULO
Nombre Varchar(40) SI NULO
Marcas_inglesas INT SI NULO
Physics_Marks INT SI NULO
Marcas_químicas INT SI NULO
Biología_Marcas INT SI NULO
Maths_Marks INT SI NULO
Marcas_totales INT SI NULO
Porcentaje INT SI NULO

La siguiente consulta activa el disparador antes de la inserción del registro del estudiante en la tabla:

CREATE TRIGGER Student _Marks  

BEFORE INSERT 

ON 

Student 

FOR EACH ROW 

SET new.Total_Marks = new.English_Marks + new.Physics_Marks + new.Chemistry_Marks + new.Biology_Marks + new.Maths_Marks,   

new.Percentage = ( new.Total_Marks / 500) * 100;

Las siguientes consultas insertan el registro en la tabla Student.

INSERT INTO Student (Student_RollNo, First_Name, English_Marks, Physics_Marks, Chemistry_Marks,Biology_Marks, Maths_Marks, Total_Marks, Percentage) VALUES ( 1, ‘Raman’, 90, 80, 75, 70 ,92, 0, 0);  

Para verificar el resultado de la instrucción INSERT anterior, debe escribir la siguiente instrucción SELECT:

SELECT * FROM Student

Salida:

Student_RollNo Nombre Marcas_inglesas Physics_Marks Marcas_químicas Biología_Marcas Maths_Marks Total_Marcas Porcentaje
1 Ramán 90 80 75 70 92 407 81

Ventajas de los disparadores en SQL

Las siguientes son las tres ventajas principales de los activadores en el lenguaje de consulta estructurado:

  1. SQL proporciona una forma alternativa de mantener los datos y la integridad referencial en las tablas.
  2. Los disparadores ayudan a ejecutar las tareas programadas automáticamente.
  3. Detectan los errores en la capa de la base de datos de varios negocios.
  4. Permiten a los usuarios de la base de datos validar valores antes de insertarlos y actualizarlos.

Desventajas de los disparadores en SQL

Las siguientes son las principales desventajas de los activadores en el lenguaje de consulta estructurado:

  1. No están compilados.
  2. No es posible encontrar y depurar los errores en los disparadores.
  3. Si usamos el código complejo en el activador, hace que la aplicación se ejecute más lentamente.
  4. Trigger aumenta la alta carga en el sistema de base de datos.