zOs/SQL/CATRIR
-- Table Abhängigkeiten über RI - referential integrity dependencies
-- dieses Query zeigt die Abhängigkeits-Levels
-- einer Menge von Tables
-- die richtige LadeReihefolge (load sequenceist) von 0 aufwaerts
-- Tables mit zyklischen RI-Abhängigkeiten werden mit Level=999
-- angezeigt, für diese ist ein Check unumgänglich
--
-- wenn ein Table (parent) geladen wird,
-- werden alle abhängigen (children) checkpending
-- und müssten also NACHHER geladen werden
--
-- Tabellen die CheckPending werden, aber nicht in der
-- die CheckPending werden, aber nicht in der AnfangsSelektion
-- (auf SysTableSpace) waren, werden mit einem Plus '+' markiert
--
with ri (lev, cr, tb, paCr, paTb, rel) as
( -- RekursionsStart
select 0, creator, name,
nullif('',''), nullIf('',''), nullIf('','')
from sysibm.sysTables s
-->>> hier gewünschte Tabellen auswählen <<<--
where type = 'T'
-- and dbName like 'CT02%'
and creator = 'VDPS2' and
name in ( 'XTRECORD'
,'XTCUSTOMER'
-- ,'XTREQUEST'
-- ,'XTREQUESTDETAIL'
,'XTVIEW'
-- ,'XTVIEWATTRIBUTE'
-- ,'XTRECORDATTRIBUTE'
,'XTREFERENCEMODULE'
-- ,'XTPROCESSINGSTEP'
,'XTSEARCHATTRIBUTE'
,'XTSEARCHSQL'
-- ,'XTREQUESTFILTER'
)
-- RekursionsSchritt: join zu Children
union all select alt.lev+1, neu.creator, neu.tbName,
neu.refTbCreator, neu.refTbName, neu.relName
from ri alt, sysibm.sysRels neu
-- vom parent zum child
where lev < 999
and neu.refTbCreator = alt.cr
and neu.refTbname = alt.tb
-- Zyklen der Länge 1 ignorieren
and not ( neu.creator = neu.refTbCreator
and neu.tbname = neu.refTbName)
)
-- bei Truncation (SQLCODE = 445)
-- Länge vergrössern
select smallint(max(lev)) "level",
case when min(lev) > 0 then '+' else ' ' end "+",
char(strip(cr) ||'.'|| strip(tb), 32) "child",
smallInt(count(distinct paCr || '.' || paTb)) "#par",
min(char(strip(paCr) ||'.'|| strip(paTb), 32)) "firstParent",
max(char(strip(paCr) ||'.'|| strip(paTb), 32)) "lastParent"
from ri
group by cr, tb
order by 1 asc, 3 asc
;
x
select char(strip(creator) || '.' || strip(tbName), 20) "child",
char(strip(refTbCreator) || '.' || strip(refTbName), 20) "par",
relName
from sysibm.sysRels
where creator = 'A218545'
;