triggers
Trigger
Procedimiento que se
ejecuta cuando se
cumple una condición
establecida al realizar
una operación.
Tipos
Dependiendo de la base de datos, los
triggers puedenser de:
Inserción (INSERT),
Actualización (UPDATE)
Borrado (DELETE).
Usos
Para mejorar la administración de
la Base de datos, sin necesidad
de contar con que el usuario
ejecute lasentencia de SQL.
Pueden generar valores de
columnas.
Previene errores de datos.
Sincroniza tablas, modifica valores
de una vista, etc.
Componentes principales
La estructurabásica de un trigger es:
Llamada
de activación.
Restricción.
Acción a ejecutar.
Tipos
Existen dos tipos:
Row Triggers (o Disparadores de fila): se
ejecutaran n-veces si sellama n-veces desde la
tabla asociada al trigger.
Statement Triggers (o Disparadores de
secuencia): sin importar la cantidad de veces
que se cumpla con la condición, su ejecución
esúnica.
Sintaxis
CREATE TRIGGER Nombre_del_Trigger
ON Nombre_de_la_tabla
FOR {INSERT,UPDATE,DELETE}
AS (Sentencias_SQL)
EJEMPLO
mysql> delimiter $$
mysql> create trigger comprueba before deleteon usuario
->for each row
->begin
->if(select count(*) from usuario,saca where
->usuario.codigo=saca.codigo_usuario)delete from usuario where
->usuario.codigosaca.codigo_usuario;
->end if;->end$$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
OLD Y NEW
Los triggers tienen dos palabras clave,
OLD y NEW que se refieren a los valores
que tienen las columnas antes ydespués
de la modificación.
INSERT
NEW
DELETE
OLD
UPDATE
NEW Y OLD
¿Qué no permite MySql?
MySql no triggers múltiples.
¿Qué si permite?
Ejemplo:
mysql> create tableestudiantes(
-> estudiante int not null auto_increment,
-> nombre varchar(35) not null,
-> primary key(estudiante));
Query OK, 0 rows affected (0.13 sec)
mysql> create table bitacora(
->...
Regístrate para leer el documento completo.