|
| 1 | +-- TODO synonyms! |
| 2 | + |
1 | 3 | CREATE OR REPLACE FUNCTION trg_taxon_concepts_u() RETURNS TRIGGER |
2 | 4 | SECURITY DEFINER LANGUAGE 'plpgsql' AS $$ |
3 | 5 | BEGIN |
|
8 | 10 | PERFORM rebuild_taxonomic_positions_from_root(NEW.id); |
9 | 11 | END IF; |
10 | 12 | END IF; |
11 | | - IF OLD.taxon_name_id <> NEW.taxon_name_id OR OLD.rank_id <> NEW.rank_id THEN |
| 13 | + IF OLD.taxon_name_id <> NEW.taxon_name_id OR OLD.rank_id <> NEW.rank_id OR |
| 14 | + (OLD.data->'full_name') <> (NEW.data->'full_name') OR |
| 15 | + (OLD.data->'rank_name') <> (NEW.data->'rank_name') THEN |
12 | 16 | PERFORM taxon_concepts_refresh_row(NEW.id); |
13 | 17 | END IF; |
14 | 18 | RETURN NULL; |
@@ -47,6 +51,45 @@ DROP TRIGGER IF EXISTS trg_taxon_concepts_i ON taxon_concepts; |
47 | 51 | CREATE TRIGGER trg_taxon_concepts_i AFTER INSERT ON taxon_concepts |
48 | 52 | FOR EACH ROW EXECUTE PROCEDURE trg_taxon_concepts_i(); |
49 | 53 |
|
| 54 | +-- DESIGNATIONS |
| 55 | + |
| 56 | +CREATE OR REPLACE FUNCTION trg_designations_u() RETURNS TRIGGER |
| 57 | +SECURITY DEFINER LANGUAGE 'plpgsql' AS $$ |
| 58 | +BEGIN |
| 59 | + IF OLD.name <> NEW.name THEN |
| 60 | + PERFORM taxon_concepts_refresh_row(tc.id) |
| 61 | + FROM taxon_concepts tc |
| 62 | + WHERE tc.designation_id = NEW.id; |
| 63 | + END IF; |
| 64 | + RETURN NULL; |
| 65 | +END |
| 66 | +$$; |
| 67 | + |
| 68 | +DROP TRIGGER IF EXISTS trg_designations_u ON designations; |
| 69 | +CREATE TRIGGER trg_designations_u AFTER UPDATE ON designations |
| 70 | +FOR EACH ROW EXECUTE PROCEDURE trg_designations_u(); |
| 71 | + |
| 72 | +-- RANKS |
| 73 | + |
| 74 | +CREATE OR REPLACE FUNCTION trg_ranks_u() RETURNS TRIGGER |
| 75 | +SECURITY DEFINER LANGUAGE 'plpgsql' AS $$ |
| 76 | +BEGIN |
| 77 | + IF OLD.name <> NEW.name THEN |
| 78 | + PERFORM rebuild_names_and_ranks_for_node(tc.id) |
| 79 | + FROM taxon_concepts tc |
| 80 | + WHERE tc.rank_id = NEW.id; |
| 81 | + --PERFORM taxon_concepts_refresh_row(tc.id) |
| 82 | + --FROM taxon_concepts tc |
| 83 | + --WHERE tc.rank_id = NEW.id; |
| 84 | + END IF; |
| 85 | + RETURN NULL; |
| 86 | +END |
| 87 | +$$; |
| 88 | + |
| 89 | +DROP TRIGGER IF EXISTS trg_ranks_u ON ranks; |
| 90 | +CREATE TRIGGER trg_ranks_u AFTER UPDATE ON ranks |
| 91 | +FOR EACH ROW EXECUTE PROCEDURE trg_ranks_u(); |
| 92 | + |
50 | 93 | DROP TRIGGER IF EXISTS trg_taxonomic_positions ON taxon_concepts; |
51 | 94 | DROP FUNCTION IF EXISTS trg_taxonomic_positions(); |
52 | 95 | DROP TRIGGER IF EXISTS trg_names_and_ranks ON taxon_concepts; |
|
0 commit comments