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
Aucun commentaire:
Enregistrer un commentaire