NOUR#84364 Scripts om de poorten en objecten van vervallen locaties op te ruimen

svn path=/Customer/; revision=66370
This commit is contained in:
Suzan Wiegerinck
2024-09-30 08:44:39 +00:00
parent 3dff5de448
commit b73b548ade
2 changed files with 244 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
--
-- $Id$
--
-- NOUR#84364 Periodieke taken geeft Aiai
-- Opschonen poorten
--
DEFINE thisfile = 'NOUR#84364_1.SQL'
DEFINE dbuser = '^NOUR'
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 ------
-- opruimen poorten
-- Alle kenmerken bij deze objecten verwijderen
DELETE ins_kenmerkdeel kd
WHERE kd.ins_kenmerkdeel_key IN
(SELECT kd.ins_kenmerkdeel_key
FROM ins_kenmerkdeel kd, ins_deel d, ins_srtdeel sd
WHERE kd.ins_deel_key = d.ins_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtdeel_key = 648);
-- Tracking verwijderen van deze objecten
DELETE fac_tracking tr
WHERE tr.fac_tracking_key IN
(SELECT t.fac_tracking_key
FROM fac_tracking t, ins_deel d
WHERE t.fac_tracking_refkey = d.ins_deel_key AND d.ins_srtdeel_key = 648);
-- Meldingen met een relatie naar het object
DELETE mld_melding_object m
WHERE m.mld_melding_object_key IN
(SELECT mo.mld_melding_object_key
FROM mld_melding_object mo, ins_deel d
WHERE mo.ins_deel_key = d.ins_deel_key AND d.ins_srtdeel_key = 648);
-- Het object is een child van een ander object, deze verwijderen we eerst
DELETE ins_deel dc
WHERE dc.ins_srtdeel_key = 648
AND dc.ins_deel_parent_key IN (SELECT dp.ins_deel_key
FROM ins_deel dp
WHERE dp.ins_srtdeel_key =648);
-- Het object is een parent van een ander object, deze relatie wordt verwijderd
UPDATE ins_deel dc
SET dc.ins_deel_parent_key = NULL
WHERE dc.ins_deel_parent_key IN (SELECT dp.ins_deel_key
FROM ins_deel dp
WHERE dp.ins_srtdeel_key = 648 );
-- geen uitgifte
-- geen ins deel koppelingen voor deze objectsoorten
-- geen periodieke taken op deze objecten
-- geen notities bij deze objecten
-- Objecten zelf verwijderen
DELETE ins_deel d
WHERE d.ins_srtdeel_key = 648;
-- We gaan ook alle objecten verwijderen van locaties die niet meer actief zijn binnen Nouryon
DELETE ins_deel d
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND d.ins_deel_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL);
------ 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

146
onces/NOUR/NOUR#84364_2.sql Normal file
View File

@@ -0,0 +1,146 @@
--
-- $Id$
--
-- NOUR#84364 Periodieke taken geeft Aiai
-- Opschonen objecten van vervallen locaties
--
DEFINE thisfile = 'NOUR#84364_2.SQL'
DEFINE dbuser = '^NOUR'
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 ------
-- opruimen poorten
-- Alle kenmerken bij deze objecten verwijderen
DELETE ins_kenmerkdeel kd
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND kd.ins_deel_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL);
-- Tracking verwijderen van deze objecten
DELETE fac_tracking tr
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND tr.fac_tracking_refkey = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL);
-- Meldingen met een relatie naar het object
DELETE mld_melding_object m
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND m.ins_deel_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL);
-- Het object is een child van een ander object, deze verwijderen we eerst
DELETE ins_deel dc
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND dc.ins_deel_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL)
AND EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND dc.ins_deel_parent_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL);
-- Het object is een parent van een ander object, deze relatie wordt verwijderd
UPDATE ins_deel dc
SET dc.ins_deel_parent_key = NULL
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND dc.ins_deel_parent_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL);
-- Het object is uitgegeven, deze uitgifte verwijderen we
DELETE ins_deel_uitgifte u
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND u.ins_deel_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL);
-- Periodieke taken op deze objecten verwijderen
DELETE ins_deelsrtcontrole sk
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND sk.ins_deel_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL);
-- er zijn reserveringen op deze objecten die we moeten verwijderen
DELETE res_rsv_deel rsv
WHERE rsv.res_deel_key IN
(SELECT rd.res_deel_key
FROM res_deel rd
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND rd.res_ins_deel_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL));
-- daarna kunnen we het reserveerbare object verwijderen
DELETE res_deel rd
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND rd.res_ins_deel_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL);
-- geen notities bij deze objecten
-- geen ins deel koppelingen voor deze objectsoorten
-- Objecten zelf verwijderen
DELETE ins_deel d
WHERE EXISTS
(SELECT i.ins_deel_key
FROM ins_deel i, alg_locatie l
WHERE i.ins_alg_locatie_key = l.alg_locatie_key
AND d.ins_deel_key = i.ins_deel_key
AND alg_locatie_verwijder IS NOT NULL);
------ 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