Files
Customer/onces/NOUR/NOUR#84364_2.sql
Suzan Wiegerinck 0970a8a08a NOUR#84364 Alleen de tracking van objecten van vervallen locaties op te ruimen
svn path=/Customer/; revision=66377
2024-09-30 11:09:53 +00:00

151 lines
5.2 KiB
SQL

--
-- $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)
AND EXISTS
(SELECT sn.fac_srtnotificatie_key
FROM fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_xmlnode = 'deel'
AND tr.fac_srtnotificatie_key = sn.fac_srtnotificatie_key);
-- 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