PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Empêcher le déclencheur récursif dans PostgreSQL

C'est ce que je fais dans PostgreSQL 9.2, même si je dois admettre que je n'ai pas trouvé cette approche documentée. Il existe une fonction pg_trigger_depth() documenté ici, que j'utilise pour différencier les appels d'origine des appels imbriqués dans le déclencheur.

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