Inilah yang saya lakukan di PostgreSQL 9.2, meskipun saya harus mengakui bahwa saya tidak menemukan pendekatan ini didokumentasikan. Ada fungsi pg_trigger_depth()
didokumentasikan di sini, yang saya gunakan untuk membedakan antara panggilan asli dan panggilan bersarang di pemicu.
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()