Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JorgitoDF

Trigger Após Inserção de Dados atualizar o Saldo

Recommended Posts

Boa tarde,

 

Sou novo no mundo de Trigger no MySql, gostaria de uma ajuda para resolver um problema que não estou conseguindo resolver.

 

Preciso de uma Trigger que Após a Inserção de um valor de débito, pegue o valor do Saldo do Registro anterior e atualize no novo registro que acabou de ser inserido, ou seja, SALDO - Valor Débito.

 

Utilizei o seguinte script para a criação da Trigger:

DELIMITER $$
CREATE TRIGGER TR_CONTA 
AFTER INSERT ON tb_conta 
FOR EACH ROW
BEGIN
	DECLARE SALDO DECIMAL;
	SELECT con_saldo FROM tb_conta INTO SALDO;
	UPDATE tb_conta SET con_saldo = SALDO - NEW.con_valor_debito WHERE cod_id_conta = NEW.cod_id_conta;
END $$
DELIMITER ;

O Select é para selecionar os dados do saldo atual do último registro e inserir na variável SALDO;

 

Após o Insert na tabela conta oude foi inserido um valor de débito no campo con_valor_debito a Trigger deve atualizar este novo registro pegando o saldo anterior e diminuindo com o valor do débito e atualizar o campo con_saldo no novo registro.

 

Porém quando executo o insert apresenta o seguinte erro: Error Code: 1172. Result consisted of more than one row.

 

Agradeço desde já quem puder me orientar neste problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se pretende atualizar a mesma tabela que se está inserindo ?

 

Seria um saldo acumulativo ?

 

Falta uma chave para localizar o registro anterior.

 

Mas creio que possa haver um erro de "mutanting table".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo Motta, pretendo atualizar o saldo na mesma tabela que estou inserindo um débito, um saldo acumulativo, toda vez que inserir em débito o campo de saldo da mesma tabela deve ser atualizado. Como eu posso manipular esta chave para localizar o registro anterior. Tem como você me dar um help?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.