TRIGGER PARA CRIAR E ATUALIZAR SALDO EM UMA TABELA

GERALDUS 12/01/2016 20:49:44
#456049
olá pessoal.

sou novo no assunto trigger e precisei usar este recurso no MySQL, mas não estou conseguindo chegar ao resultado que gostaria, por isso venho aqui pedir ajuda de vocês.

seguinte:

tenho uma tabela [ô]lancamentos[ô] com o campos [ID;HISTORICO;TIPO;VALOR;SALDO] [Tipo = Debito (D) ou Credito (C)] e tenho uma trigger pra ser disparada no BEFORE INSERT para calcular o saldo e inserir no campo SALDO. vejam exemplo abaixo que ja adaptei e funciona bem.

  CREATE TRIGGER 'SaldoAtual' BEFORE INSERT ON 'lancamentos'
FOR EACH ROW BEGIN
DECLARE saldoAnterior DECIMAL(10,2);

SET saldoAnterior = (SELECT L.SALDO FROM lancamentos L ORDER BY L.ID DESC LIMIT 1);

IF saldoAnterior <> [ô][ô] THEN

IF (NEW.TIPO = [ô]C[ô]) THEN
SET NEW.SALDO = saldoAnterior + NEW.VALOR;
ELSE
SET NEW.SALDO = saldoAnterior - NEW.VALOR;
END IF;

ELSE

SET NEW.SALDO = NEW.VALOR;

END IF;

END


esse exemplo funciona bem para o insert, mas existe outra dificuldade e não tenho conseguido resolver.

Preciso ter outra trigger no BEFORE UPDATE da mesma tabela que se eu alterar um valor anterior por exemplo esta trigger atualize o saldo da linha alterada e de todas as outras linhas que existirem depois dela para que o saldo fique correto.

espero ter me feito compreender e se alguém puder me ajudar com algum exemplo eu ficarei muito grato.
KERPLUNK 12/01/2016 21:57:43
#456051
Pessoalmente, acho uma péssima prática usar esse tipo de tabela com somatórios estáticos que devem ser atualizados toda vez que um registro é inserido, alterado ou excluído. Para esse tipo de coisa prefiro muito mais usar uma VIEW. Mais leve, mais confiável e menos suscetível à erros.
LEANDRO.LUIZ 14/01/2016 19:34:25
#456147
Boa noite,
Só complementando o KERPLUNK,...
Sem contar que ao ter uma necessidade de mudança de banco de dados, vai ter uma tremenda dor de cabeça para migrar as triggers.
Faça seu login para responder