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