Created
August 3, 2012 18:45
-
-
Save scardine/3250347 to your computer and use it in GitHub Desktop.
example audit trigger for django model that inserts to another model
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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