PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Rekursiven Trigger in PostgreSQL verhindern

Dies mache ich in PostgreSQL 9.2, obwohl ich zugeben muss, dass ich diesen Ansatz nicht dokumentiert gefunden habe. Es gibt eine Funktion pg_trigger_depth() hier dokumentiert, die ich verwende, um zwischen ursprünglichen und verschachtelten Aufrufen im Trigger zu unterscheiden.

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()