2014-05-15 3 views
0

Je veux vérifier si film.language_id se réfère à language.language_id. Je utilisé le code:Oracle Contrainte Check

SELECT * 
FROM all_tab_columns 
WHERE column_name = 'film.language'; 

Résultat:

no rows selected 

Est-ce que cela signifie qu'il n'y a pas des références/contraintes référentielles?

+0

film.language est le nom de la colonne? ce n'est pas –

Répondre

1

Si vous voulez savoir si une colonne fait référence à une autre colonne par contrainte de clé étrangère, vous pouvez effectuer les opérations suivantes:

savoir si la colonne est une contrainte:

select constraint_name from user_cons_columns 
where table_name='<Your_table>' 
and column_name='<Your_column>'; 

Si elle est-ce que cela vous donnera le nom de cette contrainte. Ensuite, vous pouvez savoir si cette contrainte est une contrainte de clé étrangère et où les points clés à l'étranger:

select constraint_type 
     ,r_constraint_name 
    from user_constraints 
where constraint_name='<your constraint name>'; 

Si la contrainte est une contrainte de clé étrangère, il est de type « R ». Cela vous donnera également le nom de la contrainte de clé primaire associée à la clé étrangère.

Étant donné le nom de la contrainte de clé primaire, vous pouvez trouver la table et la colonne (s) comme suit:

select table_name 
     ,column_name 
    from user_cons_columns 
where constraint_name = 'Your PK constraint' 

Pour faciliter la vie, vous pouvez rejoindre toutes ces questions ensemble. Mais je vous laisse ça.

+0

Peut-il avoir plus d'un type de contrainte. exemple de type "P" et "R"? – Cornelis