Boa noite caros colegas, preciso de ajuda com um trigger que implementei em uma tabela, possuo um BD com apenas 3 tabelas: CATEGORIA que vai dizer se é um Receita ou Despesa, outra tabela MOVIMENTO
onde entro com valor, descrição…etc e outra tabela SALDO que vai receber um update toda vez que movimento receber um INSERT/UPDATE/DELETE…já tentei diversas formas mas não consigo com que o trigger atualize minha tabela saldo…quem puder me orientar ficarei muito grato. Abaixo segue script do BD.
create database DB_APS;
create table movimento(
id_movimento int(11) not null auto_increment,
id_categoria int(11) not null,
desc_movimento varchar(50) not null,
recorrencia char(1) not null,
valor decimal(10,2) not null,
primary key (id_movimento, id_categoria),
index entrada_FKINDEX1(id_categoria)
);
alter table movimento
add constraint CNT_SN_RECORRENTE check(
SN_RECORRENTE IN (‘S’, ‘N’));
create table categoria(
id_categoria int (11) not null auto_increment,
tp_categoria char(1) not null,
primary key (id_categoria)
);
alter table categoria
add constraint CNT_tp_categoria check(
tp_categoria in (‘R’, ‘D’));
create table saldo(
id_saldo integer(11) not null auto_increment,
id_movimento integer not null,
id_categoria integer not null,
data timestamp default current_timestamp(),
valor_saldo decimal (10,2),
primary key ( id_saldo, id_movimento, id_categoria),
index entrada_FKIndex2(id_movimento),
index entrada_FKIndex3(id_categoria)
);
delimiter $$
create trigger TGR_atualiza_saldo after insert
on movimento
for each row
Begin
declare tp_categoria varchar(1);
declare valor float;
declare valor_saldo float;
set tp_categoria = (select tp_categoria from categoria);
set valor = (select valor from movimento);
set valor_saldo =(select valor from saldo);
if(tp_categoria = 'R') then
update saldo set valor_saldo = ( valor_saldo + valor );
end if;
end $$
delimiter ;