Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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;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.
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?
Qual a chave de tb_conta ?
cod_id_conta (pk), con_valor_debito, con_saldo
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".