]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0616.schema.actor_org_unit_trigger_prox_update.sql
LP1779158 Angular7 and ng-lint updates
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0616.schema.actor_org_unit_trigger_prox_update.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('0616', :eg_version);
4
5 CREATE OR REPLACE FUNCTION actor.org_unit_prox_update () RETURNS TRIGGER as $$
6 BEGIN
7
8
9 IF TG_OP = 'DELETE' THEN
10
11     DELETE FROM actor.org_unit_proximity WHERE (from_org = OLD.id or to_org= OLD.id);
12
13 END IF;
14
15 IF TG_OP = 'UPDATE' THEN
16
17     IF NEW.parent_ou <> OLD.parent_ou THEN
18
19         DELETE FROM actor.org_unit_proximity WHERE (from_org = OLD.id or to_org= OLD.id);
20             INSERT INTO actor.org_unit_proximity (from_org, to_org, prox)
21             SELECT  l.id, r.id, actor.org_unit_proximity(l.id,r.id)
22                 FROM  actor.org_unit l, actor.org_unit r
23                 WHERE (l.id = NEW.id or r.id = NEW.id);
24
25     END IF;
26
27 END IF;
28
29 IF TG_OP = 'INSERT' THEN
30
31      INSERT INTO actor.org_unit_proximity (from_org, to_org, prox)
32      SELECT  l.id, r.id, actor.org_unit_proximity(l.id,r.id)
33          FROM  actor.org_unit l, actor.org_unit r
34          WHERE (l.id = NEW.id or r.id = NEW.id);
35
36 END IF;
37
38 RETURN null;
39
40 END;
41 $$ LANGUAGE plpgsql;
42
43
44 CREATE TRIGGER proximity_update_tgr AFTER INSERT OR UPDATE OR DELETE ON actor.org_unit FOR EACH ROW EXECUTE PROCEDURE actor.org_unit_prox_update ();
45
46 COMMIT;