IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

escartefigue

DB2 for Z/OS : analyser les contraintes CHECK et REFERENCE

Noter ce billet
par , 29/11/2023 à 12h49 (418 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...

Envoyer le billet « DB2 for Z/OS : analyser les contraintes CHECK et REFERENCE » dans le blog Viadeo Envoyer le billet « DB2 for Z/OS : analyser les contraintes CHECK et REFERENCE » dans le blog Twitter Envoyer le billet « DB2 for Z/OS : analyser les contraintes CHECK et REFERENCE » dans le blog Google Envoyer le billet « DB2 for Z/OS : analyser les contraintes CHECK et REFERENCE » dans le blog Facebook Envoyer le billet « DB2 for Z/OS : analyser les contraintes CHECK et REFERENCE » dans le blog Digg Envoyer le billet « DB2 for Z/OS : analyser les contraintes CHECK et REFERENCE » dans le blog Delicious Envoyer le billet « DB2 for Z/OS : analyser les contraintes CHECK et REFERENCE » dans le blog MySpace Envoyer le billet « DB2 for Z/OS : analyser les contraintes CHECK et REFERENCE » dans le blog Yahoo

Mis à jour 29/11/2023 à 15h58 par escartefigue

Catégories
Sans catégorie

Commentaires