mardi 22 janvier 2013

Savoir si les clés étrangères (FK) sont présente (Oracle)


Pour connaitre les tables qui dispose ou non de foreign key (clés étrangères –FK). j’ai conçus une petit fonction Oracle pour déterminer l’existence sur une table d’une FK par rapport a un champs.


CREATE OR REPLACE FUNCTION SU.VERIF_FK (
   LA_TABLE   IN   VARCHAR,
   LE_CHAMP   IN   VARCHAR
)
   RETURN NUMBER
IS

nbLigne NUMBER;

BEGIN
   
--- verifie pour une table si la contrainte sur un champ existe

    SELECT count(*) INTO   nbLigne 
      FROM user_constraints uc, user_cons_columns ucc1
     WHERE uc.constraint_name = ucc1.constraint_name
       AND uc.table_name = LA_TABLE 
       and ucc1.column_name = LE_CHAMP 
       and uc.constraint_type = 'R';
   
   
    return nbLigne;

END;
/
Utilisation de la fonction (récupération de toutes les colonnes qui on le champ = MON_CHAMP, et pour chacune des colonnes on vérifie les FK des tables)
select VERIF_FK(user_tab_columns.table_name,'MON_CHAMP') as FK, table_name ,data_type
from user_tab_columns
where column_name ='MON_CHAMP';


FK
TABLE_NAME
DATA_TYPE
0 TABLE1 VARCHAR2
1 TABLE2 VARCHAR2
1 TABLE3 VARCHAR2

Voila, ca ne sert pas tous les jours, mais si vous faites des opérations de maintenance et de verification de base de données (respect 3 formes normales) cela peux vous être utile Sourire

Aucun commentaire:

Enregistrer un commentaire