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

MySQL

12/05/2014

Boa noite pessoal,

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 a resolver este problema, estou precisando muito desta Trigger.
Jorgito Paiva

Jorgito Paiva

Curtidas 0

Respostas

Claudio Lopes

Claudio Lopes

12/05/2014

Creio que o seu problema seja o FOR EACH ROW



Bom não conheço muito de Mysql, já fiz gatilhos no sql server, pelo que eu pesquisei esse erro é por você retornar várias linhas para o seu insert. talvez aqui

SELECT con_saldo FROM tb_conta INTO SALDO;


de uma estudada como utilizar variaveis no mysql, eu fiz algo parecido no sqlserver usando a variavel, pegando o valor antigo antes do insert e depois atualizando os dados (subtraindo)
GOSTEI 0
POSTAR