Advertisement
cmptrwz

Rename Parts

Feb 20th, 2014
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION evergreen.rename_part(part_id integer, new_label text)
  2.   RETURNS void AS
  3. $BODY$
  4. DECLARE
  5.     record_id bigint;
  6.     existing_part integer;
  7. BEGIN
  8.     SELECT INTO record_id record FROM biblio.monograph_part WHERE id = part_id;
  9.     IF NOT FOUND THEN
  10.         RETURN;
  11.     END IF;
  12.     PERFORM * FROM biblio.monograph_part WHERE id = part_id AND label = new_label;
  13.     IF FOUND THEN
  14.         RETURN;
  15.     END IF;
  16.     SELECT INTO existing_part id FROM biblio.monograph_part WHERE label = new_label AND record = record_id;
  17.     IF FOUND THEN
  18.         UPDATE asset.copy_part_map SET part = existing_part WHERE part = part_id;
  19.         UPDATE action.hold_request SET target = existing_part WHERE target = part_id AND hold_type = 'P';
  20.         UPDATE action.aged_hold_request SET target = existing_part WHERE target = part_id AND hold_type = 'P';
  21.         DELETE FROM biblio.monograph_part WHERE id = part_id;
  22.     ELSE
  23.         UPDATE biblio.monograph_part SET label = new_label, label_sortkey = NULL WHERE id = part_id;
  24.     END IF;
  25. END;
  26. $BODY$
  27.   LANGUAGE plpgsql;
  28.  
  29. CREATE OR REPLACE RULE rename_part AS
  30.     ON UPDATE TO biblio.monograph_part
  31.     WHERE OLD.id = NEW.id AND OLD.record = NEW.record AND OLD.label != NEW.label AND NEW.label_sortkey IS NOT NULL
  32.     DO INSTEAD SELECT evergreen.rename_part(OLD.id, NEW.label);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement