DB2 for Z/OS : analyser les contraintes CHECK et REFERENCE
par
, 29/11/2023 à 12h49 (665 Affichages)
Voici des requêtes qui permettent d'extraire du catalogue les informations relatives aux contraintes de contenu (CHECK) et de référence à des clefs étrangères (REFERENCE FOREIGN KEY) sur DB2 for Z/OS
Les noms d'objets sont restitués sur 8 caractères, car c'est la longueur maximale la plus souvent utilisée dans le monde Z/OS pour des raisons historiques, à adapter si besoin.
Contraintes de contenu :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 -- liste des contraintes CHECK select substr(TBOWNER, 01, 08) as "Schema" , substr(TBNAME, 01, 08) as "Table" , substr(CHECKNAME, 01, 30) as "Nom" , CHECKCONDITION as "Cond" from SYSIBM.SYSCHECKS where TBOWNER = 'SCH1' order by 1, 2, 3 ;
Contraintes de référence à des clefs étrangères :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 -- Cette requete analyse les contraintes d'intégrité entre tables -- Paramêtres à modifier en fonction du besoin : -- RL.CREATOR, RL.TBNAME et RL.REFTBNAME dans le WHERE set current schema = 'SYSIBM' ; select substr(RL.CREATOR, 01, 4) as "Schm" , substr(RL.REFTBNAME, 01, 08) as "Parent" , substr(RL.TBNAME, 01, 08) as "Enfant" , substr(RL.RELNAME, 01, 10) as "Nom" , RL.DELETERULE as "OnDel" , RL.ENFORCED as "For" , RL.CHECKEXISTINGDATA as "Chk" , FK.COLNO as "ColNo" , FK.COLNAME as "ColName" from sysibm.sysrels RL inner join sysibm.sysforeignkeys FK on FK.CREATOR = RL.CREATOR and FK.RELNAME = RL.RELNAME where RL.creator = 'SCH1' and ( RL.tbname = 'TR01' or RL.REFTBNAME= 'TR01') order by "Parent" , "Enfant" , "Nom" , "ColNo" ;
On rappellera que dans une base de données relationnelle, seules les les contraintes de type REFERENCE permettent de garantir l'intégrité parent/enfant.
Malheureusement, on rencontre un grand nombre de sites dans lesquels aucune contrainte de ce type n'est installée, sous toutes sortes de prétextes, parfois avancés par les DBA eux-mêmes... et tant pis pour l'intégrité !
Jusqu'à aujourd'hui, je n'ai jamais vu de site dépourvu de contrainte REFERENCE et sur lequel aucun orphelin n'existait...