TRIGGER PARA CRIAR E ATUALIZAR SALDO EM UMA TABELA
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.
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.
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.
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.
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.
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