Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION evergreen.rename_part(part_id integer, new_label text)
- RETURNS void AS
- $BODY$
- DECLARE
- record_id bigint;
- existing_part integer;
- BEGIN
- SELECT INTO record_id record FROM biblio.monograph_part WHERE id = part_id;
- IF NOT FOUND THEN
- RETURN;
- END IF;
- PERFORM * FROM biblio.monograph_part WHERE id = part_id AND label = new_label;
- IF FOUND THEN
- RETURN;
- END IF;
- SELECT INTO existing_part id FROM biblio.monograph_part WHERE label = new_label AND record = record_id;
- IF FOUND THEN
- UPDATE asset.copy_part_map SET part = existing_part WHERE part = part_id;
- UPDATE action.hold_request SET target = existing_part WHERE target = part_id AND hold_type = 'P';
- UPDATE action.aged_hold_request SET target = existing_part WHERE target = part_id AND hold_type = 'P';
- DELETE FROM biblio.monograph_part WHERE id = part_id;
- ELSE
- UPDATE biblio.monograph_part SET label = new_label, label_sortkey = NULL WHERE id = part_id;
- END IF;
- END;
- $BODY$
- LANGUAGE plpgsql;
- CREATE OR REPLACE RULE rename_part AS
- ON UPDATE TO biblio.monograph_part
- WHERE OLD.id = NEW.id AND OLD.record = NEW.record AND OLD.label != NEW.label AND NEW.label_sortkey IS NOT NULL
- DO INSTEAD SELECT evergreen.rename_part(OLD.id, NEW.label);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement