Skip to content

Instantly share code, notes, and snippets.

@scardine
Created August 3, 2012 18:45
Show Gist options
  • Save scardine/3250347 to your computer and use it in GitHub Desktop.
Save scardine/3250347 to your computer and use it in GitHub Desktop.
example audit trigger for django model that inserts to another model
CREATE OR REPLACE FUNCTION log_transacao_srph() RETURNS TRIGGER AS $$
BEGIN
IF TG_OP = 'UPDATE' THEN
INSERT INTO sla_mudancastatus (datahora, numero_os, anterior, novo, abertura, orcamento, aprovacao, emissao, cancelamento, reabertura, operador)
VALUES(NOW(), NEW.numero_os, OLD.status_viagem, NEW.status_viagem, NEW.abertura, NEW.orcamento, NEW.aprovacao, NEW.emissao, NEW.cancelamento, NEW.reabertura, NEW.operador);
RETURN NEW;
END IF;
IF TG_OP = 'INSERT' THEN
INSERT INTO sla_mudancastatus (datahora, numero_os, anterior, novo, abertura, orcamento, aprovacao, emissao, cancelamento, reabertura, operador)
VALUES(NOW(), '', 'ABE', NEW.status_viagem, NEW.abertura, NEW.orcamento, NEW.aprovacao, NEW.emissao, NEW.cancelamento, NEW.reabertura, NEW.operador);
RETURN NEW;
END IF;
END;
$$ LANGUAGE plpgsql;
DROP TRIGGER IF EXISTS audit_srph_status_change ON hal_ordemservico;
CREATE TRIGGER audit_srph_status_change
AFTER UPDATE ON hal_ordemservico FOR EACH ROW
WHEN (OLD.status_viagem IS DISTINCT FROM NEW.status_viagem)
EXECUTE PROCEDURE log_transacao_srph();
DROP TRIGGER IF EXISTS audit_srph_status_insert ON hal_ordemservico;
CREATE TRIGGER audit_srph_status_insert
AFTER INSERT ON hal_ordemservico FOR EACH ROW
EXECUTE PROCEDURE log_transacao_srph();
DROP FUNCTION log_transacao;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment