Hola!!!!
xicos estoy haciendo una aplicación que utiliza mysql 5.5.. Lo que trato es de tener una tabla donde se registran unos movimientos de cuenta bancaria (auxiliar_cuentas) y cada vez que se inserta una tupla en la misma, que salte un disparador, el cual llama a un procedimiento donde se calcula el estado de las cuentas. A la hora de crear ambas en mysql, me saltan errores. Estoy un poco perdida, no se donde está el error ni cómo solucionarlo. Os dejo el disparador y el procedimiento a ver si algún alma caritativa me puede exar una mano:
create trigger disparador_cuentas after insert or update or delete on auxiliar_cuentas for each row
tipo auxiliar_cuentas.concepto%TYPE;
cantidad auxiliar_cuentas.cantidad%TYPE;
dia auxiliar_cuentas.dia_modif%TYPE;
hora auxiliar_cuentas.hora_modif%TYPE;
BEGIN
select concepto into tipo from auxiliar_cuentaswhere id=(select max(id) from auxiliar_cuentas);
select cantidad into cantidad from auxiliar_cuentaswhere id=(select max(id) from auxiliar_cuentas);
select dia_modif into dia from auxiliar_cuentaswhere id=(select max(id) from auxiliar_cuentas);
select hora_modif into hora from auxiliar_cuentaswhere id=(select max(id) from auxiliar_cuentas);
calcular_estado_cuentas(tipo,cantidad,dia,hora);
END disparador_cuentas;
create procedure calcular_estado_cuentas(tipo in varchar, cantidad in int, dia in date, hora in time) as
signo cuentas_ampa.signo%TYPE;
saldo cuentas_ampa.saldo%TYPE;
BEGIN
select signo into signo from cuentas_ampa where identificador=(select max (identificador) from cuentas_ampa);
select saldo into saldo from cuentas_ampa where identificador=(select max (identificador) from cuentas_ampa);
if (signo=’-‘) then
if (tipo=’gasto’) then
saldo := saldo + cantidad;
signo := ‘-‘;
else ------------------------------------------------------------> tipo=’ingreso’
if (cantidad>saldo) then
saldo := cantidad - saldo;
signo := ‘+‘;
else
saldo := saldo - cantidad;
signo := ‘-‘;
end if;
end if;
else ----------------------------------------------------------------------------> signo=’+’
if (tipo=’ingreso’) then
saldo := saldo + cantidad;
signo := ‘+‘;
else ------------------------------------------------------------> tipo=’gasto’
if (cantidad>saldo) then
saldo := cantidad - saldo;
signo := ‘-‘;
else
saldo := saldo - cantidad;
signo := ‘+‘;
end if;
end if;
end if;
insert into cuentas_ampa [signo,saldo,dia,hora] values (signo,saldo,dia,hora);
END calcular_estado_cuentas;