X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=remove_ou_data%2F07_remove_serials.sql;fp=remove_ou_data%2F07_remove_serials.sql;h=5dd041a0a5e6aaa493273584a084216eae687242;hp=0000000000000000000000000000000000000000;hb=234d6c986f42cb7c245205bb299fa2c9d204e52a;hpb=fd5875c0d61da5e43f5539e188a451649768d646 diff --git a/remove_ou_data/07_remove_serials.sql b/remove_ou_data/07_remove_serials.sql new file mode 100644 index 0000000..5dd041a --- /dev/null +++ b/remove_ou_data/07_remove_serials.sql @@ -0,0 +1,65 @@ +-- Copyright 2015, Equinox Software, Inc. +-- Author: Galen Charlton +-- +-- This program is free software; you can redistribute it and/or +-- modify it under the terms of the GNU General Public License +-- as published by the Free Software Foundation; either version 2 +-- of the License, or (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +\set ou_to_del ''''EXAMPLE'''' +\set ECHO all +\timing + +ALTER TABLE serial.record_entry DISABLE RULE protect_mfhd_delete; + +BEGIN; + +DELETE FROM serial.basic_summary WHERE distribution IN +(SELECT id FROM serial.distribution WHERE holding_lib IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del)); + +DELETE FROM serial.distribution_note WHERE distribution IN +(SELECT id FROM serial.distribution WHERE holding_lib IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del)); + +DELETE FROM serial.index_summary WHERE distribution IN +(SELECT id FROM serial.distribution WHERE holding_lib IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del)); + +DELETE FROM serial.item WHERE stream IN +(SELECT id FROM serial.stream WHERE distribution IN +(SELECT id FROM serial.distribution WHERE holding_lib IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del))); + +DELETE FROM serial.item_note WHERE id IN +(SELECT id FROM serial.item WHERE stream IN (SELECT id FROM serial.stream WHERE distribution IN +(SELECT id FROM serial.distribution WHERE holding_lib IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del)))); + +DELETE FROM serial.stream WHERE distribution IN +(SELECT id FROM serial.distribution WHERE holding_lib IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del)); + +DELETE FROM serial.supplement_summary WHERE distribution IN +(SELECT id FROM serial.distribution WHERE holding_lib IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del)); + +DELETE FROM serial.distribution WHERE holding_lib IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del); + +UPDATE serial.record_entry SET editor = 1 WHERE editor IN +(SELECT id FROM actor.usr WHERE home_ou IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del)); + +UPDATE serial.record_entry SET creator = 1 WHERE creator IN +(SELECT id FROM actor.usr WHERE home_ou IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del)); + +UPDATE serial.record_entry SET owning_lib = 1 +WHERE owning_lib IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del) +AND id IN (SELECT record_entry FROM serial.distribution WHERE holding_lib NOT IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del)); + +DELETE FROM serial.record_entry WHERE owning_lib IN (SELECT (actor.org_unit_descendants(id)).id from actor.org_unit where shortname = :ou_to_del); + +COMMIT; + +ALTER TABLE serial.record_entry ENABLE RULE protect_mfhd_delete;