Olá pessoal, estou com uma tabela de empréstimos que remove a quantidade da tabela produtos fiz uma trigger pra INSERT, UPDATE E DELETE, estou testando o update só que não fez o que eu queria, estou aprendendo ainda a questão de trigger se alguem puder me orientar
O produto 1 tem 15 em estoque, se eu emprestar 5 ele debita os 5 e fica o 10 no estoque, só que se eu for alterar em vez de 5 pra 6 ele faz sobre o novo 10 e não sobre o antigo 15. até tentei colocar quantidade= old.quantidade - new.quantidade
mas não foi.
CREATE TRIGGER t_emprestimos_estoque
AFTER INSERT OR UPDATE OR DELETE ON emprestimos
FOR EACH ROW
EXECUTE PROCEDURE emprestimos_estoque();
CREATE OR REPLACE FUNCTION emprestimos_estoque() RETURNS trigger
AS
$$
BEGIN
IF(TG_OP = 'INSERT') THEN
UPDATE produtos set quantidade = quantidade - NEW.quantidade
WHERE codigo = NEW.produto;
RETURN NEW;
ELSEIF(TG_OP = 'UPDATE') THEN
UPDATE produtos set quantidade = quantidade - NEW.quantidade
WHERE codigo = NEW.produto;
RETURN NEW;
ELSEIF(TG_OP = 'DELETE') THEN
UPDATE produtos set quantidade = quantidade + OLD.quantidade
WHERE codigo = OLD.produto;
RETURN OLD;
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;