PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Impedisci il trigger ricorsivo in PostgreSQL

Questo è ciò che faccio in PostgreSQL 9.2, anche se devo ammettere che non ho trovato questo approccio documentato. C'è una funzione pg_trigger_depth() documentato qui, che utilizzo per distinguere tra chiamate originali e nidificate nel trigger.

CREATE TRIGGER trg_taxonomic_positions
AFTER INSERT OR UPDATE OF taxonomic_position
ON taxon_concepts
FOR EACH ROW
WHEN (pg_trigger_depth() = 0)
EXECUTE PROCEDURE trg_taxonomic_positions()