triggers 22
L.I. Aura Esther
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 triggerspueden ser 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
estructura bá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 se llama nveces desde la tabla asociada altrigger.
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
ONNombre_de_la_tabla
FOR {INSERT,UPDATE,DELETE}
AS (Sentencias_SQL)
EJEMPLO
mysql> delimiter $$
mysql> create trigger comprueba before delete on
usuario
->for each row
->begin
->if(select count(*) fromusuario,saca where
->usuario.codigo=saca.codigo_usuario)<0
then
->delete from usuario where
->usuario.codigo<>saca.codigo_usuario;
->end if;
->end$$
Query OK, 0 rows affected (0.00 sec)
OLD Y NEWLos
triggers tienen dos palabras
clave, OLD y NEW que se refieren a
los valores que tienen las columnas
antes y después de la modificación.
INSERT
NEW
DELETE
OLD
UPDATE
NEW Y OLD
¿Qué nopermite MySql?
MySql
no triggers múltiples.
¿Qué si permite?
Ejemplo:
mysql> create table estudiantes(
-> estudiante int not null
auto_increment,
-> nombre varchar(35) not null,
-> primarykey(estudiante));
Query OK, 0 rows affected (0.13 sec)
mysql> create table bitacora(
-> Bitacora int not null
auto_increment,
-> Accion varchar(100) not null,
-> primary key(Bitacora));
Query OK, 0 rows...
Regístrate para leer el documento completo.