GARANTIR DESCONTO

Fórum Trigger Após Inserção de Dados atualizar o Saldo #478744

12/05/2014

0

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

Responder

Posts

29/05/2014

Claudio Lopes

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)
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar