0
I am trying to use the following Procedure and Trigger in mysql so that when inserting a record in a table the Trigger is fired for subtraction of the given value in another table, but it turns out that it’s applying to all records in the target table and not just in the record where it has value compared. I suspect to be the type varchar that in the target table is type '1.1.1'. Below I leave the code.
# Trigger para atualização de contas.
DELIMITER //
CREATE TRIGGER TRG_SaldoConta_AI AFTER INSERT ON processos
FOR EACH ROW
BEGIN CALL SP_AtualizaContas (new.rubrica, new.valor);
END //
DELIMITER ;
# Procedure para atualização de Contas.
DELIMITER //
CREATE PROCEDURE SP_AtualizaContas( rubrica varchar(45), valor double)
BEGIN
UPDATE contas SET saldo_anterior = saldo_atual, saldo_atual = saldo_atual - valor
WHERE rubrica = rubrica;
END //
DELIMITER ;
However I have these others that work normally. Where the compared value is the year also varchar, type '2015'.
# Trigger para atualização de dotações anuais.
DELIMITER //
CREATE TRIGGER TRG_SaldoDotacaoAnual_AI AFTER INSERT ON contas
FOR EACH ROW
BEGIN CALL SP_AtualizaDotacaoAnual (new.periodo, new.dotacao);
END //
DELIMITER ;
# Procedure para atualização de dotações anuais.
DELIMITER //
CREATE PROCEDURE SP_AtualizaDotacaoAnual( periodo varchar(45), dotacao double)
BEGIN
UPDATE dotacoes SET saldo_anterior = saldo_atual, saldo_atual = saldo_atual - dotacao
WHERE ano_vigente = periodo;
END //
DELIMITER ;