Disparador: un disparador es un procedimiento almacenado en la base de datos que se invoca automáticamente cada vez que ocurre un evento especial en la base de datos. Por ejemplo, se puede invocar un disparador cuando se inserta una fila en una tabla específica o cuando se actualizan ciertas columnas de la tabla.
Sintaxis:
create trigger [trigger_name] [before | after] {insert | update | delete} on [table_name] [for each row] [trigger_body]
Explicación de la sintaxis:
- crear disparador [trigger_name]: crea o reemplaza un disparador existente con el trigger_name.
- [antes | after]: Esto especifica cuándo se ejecutará el disparador.
- {insertar | actualizar | delete}: Esto especifica la operación DML.
- on [table_name]: Esto especifica el nombre de la tabla asociada con el disparador.
- [para cada fila]: Esto especifica un activador de nivel de fila, es decir, el activador se ejecutará para cada fila afectada.
- [trigger_body]: Esto proporciona la operación que se realizará cuando se dispare el disparador
ANTES y DESPUÉS del disparador:
ANTES de que los disparadores ejecuten la acción del disparador antes de que se ejecute la sentencia de disparo.
Los disparadores AFTER ejecutan la acción del disparador después de que se ejecuta la declaración de disparador.
Ejemplo:
Dada la base de datos de informes de estudiantes, en la que se registra la evaluación de las calificaciones de los estudiantes. En dicho esquema, cree un disparador para que el total y el promedio de las marcas especificadas se inserten automáticamente cada vez que se inserte un registro.
Aquí, como el activador invocará antes de que se inserte el registro, se puede usar ANTES de la etiqueta.
Supongamos que el esquema de la base de datos:
mysql> desc Student; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | tid | int(4) | NO | PRI | NULL | auto_increment | | name | varchar(30) | YES | | NULL | | | subj1 | int(2) | YES | | NULL | | | subj2 | int(2) | YES | | NULL | | | subj3 | int(2) | YES | | NULL | | | total | int(3) | YES | | NULL | | | per | int(3) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 7 rows in set (0.00 sec)
Disparador SQL a declaración de problema.
create trigger stud_marks before INSERT on Student for each row set Student.total = Student.subj1 + Student.subj2 + Student.subj3, Student.per = Student.total * 60 / 100;
La instrucción SQL anterior creará un disparador en la base de datos del estudiante en el que cada vez que se ingresen las calificaciones de las materias, antes de insertar estos datos en la base de datos, el disparador calculará esos dos valores y los insertará con los valores ingresados. es decir,
mysql> insert into Student values(0, "ABCDE", 20, 20, 20, 0, 0); Query OK, 1 row affected (0.09 sec) mysql> select * from Student; +-----+-------+-------+-------+-------+-------+------+ | tid | name | subj1 | subj2 | subj3 | total | per | +-----+-------+-------+-------+-------+-------+------+ | 100 | ABCDE | 20 | 20 | 20 | 60 | 36 | +-----+-------+-------+-------+-------+-------+------+ 1 row in set (0.00 sec)
De esta manera, se puede crear y ejecutar un disparador en las bases de datos.
Publicación traducida automáticamente
Artículo escrito por bilal-hungund y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA