1- CREATE OR REPLACE FUNCTION trg_taxonomic_positions () RETURNS trigger AS $trg_taxonomic_positions$
2- BEGIN
3- IF TG_OP = ' INSERT' AND NEW .parent_id IS NOT NULL THEN
1+ CREATE OR REPLACE FUNCTION trg_taxon_concepts_u () RETURNS TRIGGER
2+ SECURITY DEFINER LANGUAGE ' plpgsql' AS $$
3+ BEGIN
4+ IF OLD .taxonomic_position <> NEW .taxonomic_position OR OLD .parent_id <> NEW .parent_id THEN
5+ IF NEW .parent_id IS NOT NULL THEN
46 PERFORM rebuild_taxonomic_positions_from_root(NEW .parent_id );
57 ELSE
68 PERFORM rebuild_taxonomic_positions_from_root(NEW .id );
79 END IF;
8- RETURN NEW;
9- END;
10- $trg_taxonomic_positions$ LANGUAGE plpgsql;
10+ END IF;
11+ IF OLD .taxon_name_id <> NEW .taxon_name_id OR OLD .rank_id <> NEW .rank_id THEN
12+ PERFORM taxon_concepts_refresh_row(NEW .id );
13+ END IF;
14+ RETURN NULL ;
15+ END
16+ $$;
1117
12- DROP TRIGGER IF EXISTS trg_taxonomic_positions ON taxon_concepts;
18+ CREATE OR REPLACE FUNCTION trg_taxon_concepts_d () RETURNS TRIGGER
19+ SECURITY DEFINER LANGUAGE ' plpgsql' AS $$
20+ BEGIN
21+ PERFORM taxon_concepts_refresh_row(OLD .id );
22+ RETURN NULL ;
23+ END
24+ $$;
1325
14- CREATE TRIGGER trg_taxonomic_positions
15- AFTER INSERT OR UPDATE OF taxonomic_position
16- ON taxon_concepts
17- FOR EACH ROW
18- WHEN (pg_trigger_depth() = 0 )
19- EXECUTE PROCEDURE trg_taxonomic_positions();
26+ CREATE OR REPLACE FUNCTION trg_taxon_concepts_i () RETURNS TRIGGER
27+ SECURITY DEFINER LANGUAGE ' plpgsql' AS $$
28+ BEGIN
29+ IF NEW .parent_id IS NOT NULL THEN
30+ PERFORM rebuild_taxonomic_positions_from_root(NEW .parent_id );
31+ ELSE
32+ PERFORM rebuild_taxonomic_positions_from_root(NEW .id );
33+ END IF;
34+ PERFORM rebuild_names_and_ranks_for_node(NEW .id );
35+ PERFORM taxon_concepts_refresh_row(NEW .id );
36+ RETURN NULL ;
37+ END
38+ $$;
2039
21- CREATE OR REPLACE FUNCTION trg_names_and_ranks () RETURNS trigger AS $trg_names_and_ranks$
22- BEGIN
23- PERFORM rebuild_names_and_ranks_for_node(NEW .id );
24- RETURN NEW;
25- END;
26- $trg_names_and_ranks$ LANGUAGE plpgsql;
40+ DROP TRIGGER IF EXISTS trg_taxon_concepts_u ON taxon_concepts;
41+ CREATE TRIGGER trg_taxon_concepts_u AFTER UPDATE ON taxon_concepts
42+ FOR EACH ROW EXECUTE PROCEDURE trg_taxon_concepts_u();
43+ DROP TRIGGER IF EXISTS trg_taxon_concepts_d ON taxon_concepts;
44+ CREATE TRIGGER trg_taxon_concepts_d AFTER DELETE ON taxon_concepts
45+ FOR EACH ROW EXECUTE PROCEDURE trg_taxon_concepts_d();
46+ DROP TRIGGER IF EXISTS trg_taxon_concepts_i ON taxon_concepts;
47+ CREATE TRIGGER trg_taxon_concepts_i AFTER INSERT ON taxon_concepts
48+ FOR EACH ROW EXECUTE PROCEDURE trg_taxon_concepts_i();
2749
50+ DROP TRIGGER IF EXISTS trg_taxonomic_positions ON taxon_concepts;
51+ DROP FUNCTION IF EXISTS trg_taxonomic_positions();
2852DROP TRIGGER IF EXISTS trg_names_and_ranks ON taxon_concepts;
29-
30- CREATE TRIGGER trg_names_and_ranks
31- AFTER INSERT OR UPDATE OF taxon_name_id, rank_id
32- ON taxon_concepts
33- FOR EACH ROW
34- EXECUTE PROCEDURE trg_names_and_ranks();
53+ DROP FUNCTION IF EXISTS trg_names_and_ranks();
0 commit comments