sql >> Base de Datos >  >> RDS >> PostgreSQL

Prevenir el disparador recursivo en PostgreSQL

Esto es lo que hago en PostgreSQL 9.2, aunque debo admitir que no encontré documentado este enfoque. Hay una función pg_trigger_depth() documentado aquí, que utilizo para diferenciar entre llamadas originales y anidadas en el disparador.

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