-- -- $Id$ -- -- Aanpassingen om DB44c (prod) naar de DB44d te brengen -- Merk op dat de recreate er nog bij komt die de DB-version bijwerkt -- -- MOET OOK ZIJN/WORDEN OPGENOMEN IN DB43TO44d.src !!! DEFINE thisfile = 'DB44cto44d_3.sql' DEFINE dbuser = '*' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL; WHENEVER SQLERROR CONTINUE; PROMPT &fcltcusterr SET DEFINE OFF ------ payload begin ------ -- /////////////////////////////////////////////////////////////////////////////////////////// FCLT#77314 -- Drop trigger om res_rsv_ruimte-records aan te kunnen passen in bo_status = 6 DROP TRIGGER res_t_res_rsv_ruimte_B_IU; -- Strip de timestamp (ook maar voor verwijderde records) UPDATE res_rsv_ruimte SET res_rsv_ruimte_externnr = SUBSTR (res_rsv_ruimte_externnr, 1, LENGTH (res_rsv_ruimte_externnr) - 14) WHERE res_rsv_ruimte_externnr IS NOT NULL AND res_rsv_ruimte_externnr NOT LIKE '##iCalUId##%' AND REGEXP_LIKE (res_rsv_ruimte_externnr, '\|\d{13}$'); -- Verwijder de dubbelen op een nette manier die niet de Outlook koppeling aftrapt UPDATE res_rsv_ruimte SET res_rsv_ruimte_externnr = NULL , res_rsv_ruimte_verwijder = SYSDATE WHERE res_rsv_ruimte_externnr IS NOT NULL AND res_rsv_ruimte_verwijder IS NULL AND res_rsv_ruimte_key NOT IN ( SELECT MIN (res_rsv_ruimte_key) FROM res_rsv_ruimte WHERE res_rsv_ruimte_externnr IS NOT NULL AND res_rsv_ruimte_verwijder IS NULL GROUP BY res_rsv_ruimte_externnr); -- Voeg de nieuwe unieke index toe CREATE UNIQUE INDEX res_i_res_rsv_ruimte18 ON res_rsv_ruimte (CASE WHEN res_rsv_ruimte_verwijder IS NULL THEN res_rsv_ruimte_externnr ELSE NULL END); -- En voeg trigger weer toe CREATE OR REPLACE TRIGGER res_t_res_rsv_ruimte_B_IU BEFORE INSERT OR UPDATE ON res_rsv_ruimte FOR EACH ROW BEGIN IF :old.res_status_bo_key=6 THEN raise_application_error(-20001, 'Reserveringsgegevens '||:new.res_rsv_ruimte_key||'/'||:new.res_rsv_ruimte_volgnr||' zijn verwerkt; wijzigen is niet meer toegestaan.'); END IF; BEGIN IF :new.res_rsv_ruimte_verwijder IS NOT NULL OR (:new.res_rsv_ruimte_verwijder IS NULL AND :old.res_rsv_ruimte_verwijder IS NOT NULL) THEN UPDATE res_rsv_artikel SET res_rsv_artikel_verwijder = :new.res_rsv_ruimte_verwijder WHERE res_rsv_artikel.res_rsv_ruimte_key = :new.res_rsv_ruimte_key AND res_rsv_artikel.res_rsv_artikel_verwijder IS NULL; END IF; END; BEGIN IF :new.res_rsv_ruimte_verwijder IS NOT NULL OR (:new.res_rsv_ruimte_verwijder IS NULL AND :old.res_rsv_ruimte_verwijder IS NOT NULL) THEN UPDATE res_rsv_deel SET res_rsv_deel_verwijder = :new.res_rsv_ruimte_verwijder WHERE res_rsv_deel.res_rsv_ruimte_key = :new.res_rsv_ruimte_key AND res_rsv_deel.res_rsv_deel_verwijder IS NULL; END IF; END; BEGIN IF :new.res_rsv_ruimte_verwijder IS NOT NULL THEN DELETE FROM bez_afspraak WHERE bez_afspraak.res_rsv_ruimte_key = :new.res_rsv_ruimte_key; END IF; END; BEGIN IF :new.res_rsv_ruimte_host_key <> :old.res_rsv_ruimte_host_key THEN UPDATE bez_afspraak set bez_afspraak_host_key = :new.res_rsv_ruimte_host_key WHERE res_rsv_ruimte_key = :new.res_rsv_ruimte_key AND bez_afspraak_host_key IS NOT NULL; END IF; END; BEGIN IF :new.res_rsv_ruimte_contact_key <> :old.res_rsv_ruimte_contact_key THEN UPDATE bez_afspraak set bez_afspraak_contact_key= :new.res_rsv_ruimte_contact_key WHERE res_rsv_ruimte_key =:new.res_rsv_ruimte_key; END IF; END; END; / ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 1); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile