I'm trying to use the procedure and trigger below in mysql so that when inserting a record into a table the trigger is triggered for subtraction of the given value in another table, but it happens that it is applying to all records of the target table and not just in the record in which it has the value compared. I suspect it is the varchar type that in the target table is of type '1.1.1.1'. Below is 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 value compared 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 ;