safer MR mapping
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 6 Oct 2008 11:27:52 +0000 (11:27 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 6 Oct 2008 11:27:52 +0000 (11:27 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@10760 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/extras/import/quick_metarecord_map.sql

index f058a4d..be92039 100644 (file)
@@ -1,28 +1,20 @@
 BEGIN;
 
-ALTER TABLE metabib.metarecord_source_map DROP CONSTRAINT metabib_metarecord_source_map_metarecord_fkey;
-
-TRUNCATE metabib.metarecord;
-TRUNCATE metabib.metarecord_source_map;
-
 INSERT INTO metabib.metarecord (fingerprint,master_record)
        SELECT  fingerprint,id
          FROM  (SELECT DISTINCT ON (fingerprint)
                        fingerprint, id, quality
                  FROM  biblio.record_entry
                  ORDER BY fingerprint, quality desc) AS x
-         WHERE fingerprint IS NOT NULL;
+         WHERE fingerprint IS NOT NULL
+            AND fingerprint NOT IN ( SELECT fingerprint FROM metabib.metarecord);
 
 INSERT INTO metabib.metarecord_source_map (metarecord,source)
        SELECT  m.id, b.id
          FROM  biblio.record_entry b
-               JOIN metabib.metarecord m ON (m.fingerprint = b.fingerprint);
-
-COMMIT;
-
-BEGIN;
-
-ALTER TABLE metabib.metarecord_source_map ADD CONSTRAINT metabib_metarecord_source_map_metarecord_fkey FOREIGN KEY (metarecord) REFERENCES metabib.metarecord (id) DEFERRABLE INITIALLY DEFERRED;
+               JOIN metabib.metarecord m ON (m.fingerprint = b.fingerprint)
+               LEFT JOIN metabib.metarecord_source_map s ON (b.id = s.source)
+      WHERE s.id IS NULL;
 
 COMMIT;