Avoid collisions while refreshing OPAC visibility
[migration-tools.git] / sql / base / base.sql
index 18d0465..0ebfb54 100644 (file)
@@ -1052,7 +1052,7 @@ DECLARE
   
 BEGIN
 
-       EXECUTE ('TRUNCATE ' || c || ';');
+       EXECUTE ('DELETE FROM ' || c || ';');
        EXECUTE ('INSERT INTO ' || c || ' (usr, barcode) SELECT id, usrname FROM ' || u || ';');
        EXECUTE ('UPDATE ' || u || ' u SET card = c.id FROM ' || c || ' c WHERE c.usr = u.id;');
 
@@ -1272,10 +1272,10 @@ CREATE OR REPLACE FUNCTION migration_tools.refresh_opac_visible_copies ( ) RETUR
 
 BEGIN  
 
-       TRUNCATE asset.opac_visible_copies;
+       DELETE FROM asset.opac_visible_copies;
 
        INSERT INTO asset.opac_visible_copies (id, circ_lib, record)
-               SELECT
+               SELECT DISTINCT
                        cp.id, cp.circ_lib, cn.record
                FROM
                        asset.copy cp
@@ -1291,7 +1291,8 @@ BEGIN
                        cs.opac_visible AND
                        cl.opac_visible AND
                        cp.opac_visible AND
-                       a.opac_visible;
+                       a.opac_visible AND
+                       cp.id NOT IN (SELECT id FROM asset.opac_visible_copies);
 
 END;