BEGIN; INSERT INTO config.upgrade_log (version) VALUES ('0320'); -- miker CREATE OR REPLACE FUNCTION maintain_901 () RETURNS TRIGGER AS $func$ BEGIN NEW.marc := REGEXP_REPLACE(NEW.marc, E'', '', 'g'); IF TG_TABLE_SCHEMA = 'biblio' THEN NEW.marc := REGEXP_REPLACE( NEW.marc, E'()', E'' || '' || NEW.tcn_value || E'' || '' || NEW.tcn_source || E'' || '' || NEW.id || E'' || '' || TG_TABLE_SCHEMA || E'' || CASE WHEN NEW.owner IS NOT NULL THEN '' || NEW.owner || E'' ELSE '' END || CASE WHEN NEW.share_depth IS NOT NULL THEN '' || NEW.share_depth || E'' ELSE '' END || E'\\1' ); ELSIF TG_TABLE_SCHEMA = 'authority' THEN NEW.marc := REGEXP_REPLACE( NEW.marc, E'()', E'' || '' || NEW.arn_value || E'' || '' || NEW.arn_source || E'' || '' || NEW.id || E'' || '' || TG_TABLE_SCHEMA || E'' || E'\\1' ); ELSIF TG_TABLE_SCHEMA = 'serial' THEN NEW.marc := REGEXP_REPLACE( NEW.marc, E'()', E'' || '' || NEW.id || E'' || '' || TG_TABLE_SCHEMA || E'' || '' || NEW.owning_lib || E'' || CASE WHEN NEW.record IS NOT NULL THEN '' || NEW.record || E'' ELSE '' END || E'\\1' ); ELSE NEW.marc := REGEXP_REPLACE( NEW.marc, E'()', E'' || '' || NEW.id || E'' || '' || TG_TABLE_SCHEMA || E'' || E'\\1' ); END IF; RETURN NEW; END; $func$ LANGUAGE PLPGSQL; CREATE TRIGGER b_maintain_901 BEFORE INSERT OR UPDATE ON biblio.record_entry FOR EACH ROW EXECUTE PROCEDURE maintain_901(); CREATE TRIGGER b_maintain_901 BEFORE INSERT OR UPDATE ON authority.record_entry FOR EACH ROW EXECUTE PROCEDURE maintain_901(); CREATE TRIGGER b_maintain_901 BEFORE INSERT OR UPDATE ON serial.record_entry FOR EACH ROW EXECUTE PROCEDURE maintain_901(); COMMIT;