Đây là những gì tôi làm trong PostgreSQL 9.2, mặc dù tôi phải thừa nhận rằng tôi không tìm thấy phương pháp này được ghi lại. Có một hàm pg_trigger_depth()
được ghi lại ở đây, mà tôi sử dụng để phân biệt giữa các cuộc gọi gốc và các cuộc gọi lồng nhau trong trình kích hoạt.
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()