Trigger en MySQL

1 06 2008

Bueno aquí paso a explicar, paso por paso, nuestro trigger de MySQL:

delimiter //
create trigger triggerAcceso after delete on Acceso
for each row
begin
set @fecha=(select count(fecha) from historicaAcceso where old.fecha=fecha);
if (@fecha=1) then
if (old.idBillete>0) then
update historicaAcceso
set numBillete=numBillete+1;
update historicaAcceso
set numAcceso=numAcceso+1;
else
update historicaAcceso
set numHabitual=numHabitual+1;
update historicaAcceso
set numAcceso=numAcceso+1;
end if;
else
insert into historicaAcceso values (old.fecha,0,0,0);
if (old.idBillete>0) then
update historicaAcceso
set numBillete=numBillete+1;
update historicaAcceso
set numAcceso=numAcceso+1;
else
update historicaAcceso
set numHabitual=numHabitual+1;
update historicaAcceso
set numAcceso=numAcceso+1;
end if;
end if;
end;//
delimiter ;

-Delimiter: el delimiter se usa para poder ejecutar todo el codigo a la vez, porque sinó MySQL te lo ejecuta cacho a cacho, es más ese era uno de nuestros errores al principio.

-Primero se crea el trigger “create trigger” y se le asigna un nombre, y el momento en el que se va a detonar, “after”/”before” y la query “delete”/”insert”… etc

-“For each row”, el trigger salta en cada fila.

-Dentro del begin/end se encuentra nuestro codigo SQL, que es el que se ejecutará cuando el trigger se detone.

-Las variables en MySQL llevan una “@” por delante, de tal manera que al hacer “set @con=(query)” el valor de la query se inserta en la variable.

-Los “if” en MySQL funcionan parecido a en PASCAL, es decir “IF (sentencia) then (codigo) else (codigo) end if”;

-Básicamente lo que hace nuestro trigger, es mirar en la “row” borrada que tipo de usuario es, si esporádico o habitual y mirar la fecha, si para la fecha del acceso ya hay una “row” creada en nuestra tabla histórica de acceso simplemente sumará 1 al numero de accesos y al tipo de cliente, y si no está dicha “row”, se creara la correspondiente fila con la fecha del acceso.


Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: