Skip to content

Commit 2b192da

Browse files
author
Agnieszka Figiel
committed
added triggers for rank and designation update
1 parent d0d07e3 commit 2b192da

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

db/plpgsql/014_taxon_concept_triggers.sql

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
-- TODO synonyms!
2+
13
CREATE OR REPLACE FUNCTION trg_taxon_concepts_u() RETURNS TRIGGER
24
SECURITY DEFINER LANGUAGE 'plpgsql' AS $$
35
BEGIN
@@ -8,7 +10,9 @@ BEGIN
810
PERFORM rebuild_taxonomic_positions_from_root(NEW.id);
911
END IF;
1012
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
1216
PERFORM taxon_concepts_refresh_row(NEW.id);
1317
END IF;
1418
RETURN NULL;
@@ -47,6 +51,45 @@ DROP TRIGGER IF EXISTS trg_taxon_concepts_i ON taxon_concepts;
4751
CREATE TRIGGER trg_taxon_concepts_i AFTER INSERT ON taxon_concepts
4852
FOR EACH ROW EXECUTE PROCEDURE trg_taxon_concepts_i();
4953

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+
5093
DROP TRIGGER IF EXISTS trg_taxonomic_positions ON taxon_concepts;
5194
DROP FUNCTION IF EXISTS trg_taxonomic_positions();
5295
DROP TRIGGER IF EXISTS trg_names_and_ranks ON taxon_concepts;

doc/sapi_triggers.doc

2 KB
Binary file not shown.

0 commit comments

Comments
 (0)