zOs/SQL/RICOL
-- referential integrity with column pairs
with r as
( select *
from sysibm.sysrels
where (creator = 'OA1A' and tbname like 'T%')
) ,
f as
( select ff.*
from r, sysibm.sysforeignkeys ff
where r.creator = ff.creator
and r.tbName = ff.tbName
and r.relName = ff.relName
) ,
k as
( select r.creator, r.tbName, r.relName, kk.*, i.name kIxName
from r, sysibm.sysindexes i, sysibm.syskeys kk
where
(
( r.ixName <> ''
and r.ixOwner = i.creator and r.ixName = i.name
) or (r.ixName = '' and i.uniqueRule = 'P'
and r.refTBCreator = i.tbCreator
and r.refTbName = i.tbName
) ) and i.creator = kk.ixCreator
and i.name = kk.ixName
)
select char(strip(r.creator) ||'.'|| strip(r.tbname)
|| '.' || strip(f.colName),40) "crea.table.col",
char(strip(r.refTBcreator) ||'.'|| strip(r.refTBname)
|| '.' || strip(k.colName), 40) "references",
f.colSeq, k.colSeq,
char(r.relName,12),
r.deleteRule "ru", r.enforced "en", r.colcount "cols",
char(r.ixName, 12) "relIndex",
char(k.kIxName, 12) "indIndex"
from r
left join
(f full join k
on f.creator = k.creator
and f.tbName = k.tbName
and f.relName = k.relName
and f.colSeq = k.colSeq
)
on r.creator = k.creator
and r.tbName = k.tbName
and r.relName = k.relName
;