Trigger não atualiza tabela de destino

0 respostas
B

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 ;

Criado 18 de maio de 2016
Respostas 0
Participantes 1