3 INSERT INTO config.upgrade_log (version) VALUES ('0320'); -- miker
5 CREATE OR REPLACE FUNCTION maintain_901 () RETURNS TRIGGER AS $func$
7 NEW.marc := REGEXP_REPLACE(NEW.marc, E'<datafield tag="901".+?</datafield>', '', 'g');
8 IF TG_TABLE_SCHEMA = 'biblio' THEN
9 NEW.marc := REGEXP_REPLACE(
11 E'(</(?:[^:]*?:)?record>)',
12 E'<datafield tag="901" ind1=" " ind2=" ">' ||
13 '<subfield code="a">' || NEW.tcn_value || E'</subfield>' ||
14 '<subfield code="b">' || NEW.tcn_source || E'</subfield>' ||
15 '<subfield code="c">' || NEW.id || E'</subfield>' ||
16 '<subfield code="t">' || TG_TABLE_SCHEMA || E'</subfield>' ||
17 CASE WHEN NEW.owner IS NOT NULL THEN '<subfield code="o">' || NEW.owner || E'</subfield>' ELSE '' END ||
18 CASE WHEN NEW.share_depth IS NOT NULL THEN '<subfield code="d">' || NEW.share_depth || E'</subfield>' ELSE '' END ||
21 ELSIF TG_TABLE_SCHEMA = 'authority' THEN
22 NEW.marc := REGEXP_REPLACE(
24 E'(</(?:[^:]*?:)?record>)',
25 E'<datafield tag="901" ind1=" " ind2=" ">' ||
26 '<subfield code="a">' || NEW.arn_value || E'</subfield>' ||
27 '<subfield code="b">' || NEW.arn_source || E'</subfield>' ||
28 '<subfield code="c">' || NEW.id || E'</subfield>' ||
29 '<subfield code="t">' || TG_TABLE_SCHEMA || E'</subfield>' ||
32 ELSIF TG_TABLE_SCHEMA = 'serial' THEN
33 NEW.marc := REGEXP_REPLACE(
35 E'(</(?:[^:]*?:)?record>)',
36 E'<datafield tag="901" ind1=" " ind2=" ">' ||
37 '<subfield code="c">' || NEW.id || E'</subfield>' ||
38 '<subfield code="t">' || TG_TABLE_SCHEMA || E'</subfield>' ||
39 '<subfield code="o">' || NEW.owning_lib || E'</subfield>' ||
40 CASE WHEN NEW.record IS NOT NULL THEN '<subfield code="r">' || NEW.record || E'</subfield>' ELSE '' END ||
44 NEW.marc := REGEXP_REPLACE(
46 E'(</(?:[^:]*?:)?record>)',
47 E'<datafield tag="901" ind1=" " ind2=" ">' ||
48 '<subfield code="c">' || NEW.id || E'</subfield>' ||
49 '<subfield code="t">' || TG_TABLE_SCHEMA || E'</subfield>' ||
56 $func$ LANGUAGE PLPGSQL;
58 CREATE TRIGGER b_maintain_901 BEFORE INSERT OR UPDATE ON biblio.record_entry FOR EACH ROW EXECUTE PROCEDURE maintain_901();
59 CREATE TRIGGER b_maintain_901 BEFORE INSERT OR UPDATE ON authority.record_entry FOR EACH ROW EXECUTE PROCEDURE maintain_901();
60 CREATE TRIGGER b_maintain_901 BEFORE INSERT OR UPDATE ON serial.record_entry FOR EACH ROW EXECUTE PROCEDURE maintain_901();