Estou precisando criar uma trigger no postgres que chame uma função de insert. Por exemplo: quando um registro é inserido, atualizado ou deletado em uma tabela é disparada uma trigger que chama uma função (inseri_auditoria(parametro1, parametro2, parametro3)).
Alguém poderia me ajudar com isso?
Eu tenho o livro PostgreSQL Guia do Programador, é bem legal, têm vários exemplos, veja:
Exemplo para incrementar a tabela TOTAL_CONTAS de acordo com o tipo da conta do cliente (F = Física, J= Jurídica):
CREATE FUNCTION incrementaContas() RETURNS TRIGGER AS $$
BEGIN
// a variável NEW representa no PostgreSQL os valores do registro que estará sendo manipulado.
IF NEW.tipo = 'F' THEN
// se o tipo for 'F' , indica que a conta é de pessoa física
UPDATE TOTAL_CONTAS SET QUANTIDADE = QUANTIDADE + 1 WHERE TIPO = 'FISICA';
ELSE
// caso contrário, a conta será considerada do tipo pessoa jurídica
UPDATE TOTAL_CONTAS SET QUANTIDADE = QUANTIDADE + 1 WHERE TIPO = 'JURIDICA';
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
// Criação do trigger para que a função acima "incrementaContas" seja invocada a cada novo registro inserido na tabela CONTAS
CREATE TRIGGER triggerIncrementaContas AFTER INSERT ON CONTAS FOR EACH ROW EXECUTE PROCEDURE incrementaContas();
// Testando o seu trigger
INSERT INTO CONTAS (numero, saldo, tipo) VALUES (1, 0, 'F');