2014-05-15 133 views
0

我想檢查是否film.language_id是指language.language_id。 我使用的代碼:Oracle約束檢查

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

結果:

no rows selected 

這是否意味着沒有引用/引用約束?

+0

film.language是列名嗎?它不是 –

回答

1

如果你想找出一個列是指由外鍵約束的另一列則可以做到以下幾點:

查明是否列在約束:

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

如果這會給你那個約束的名字。 接下來,您可以看看這個約束是一個外鍵約束,如果外國關鍵點:

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

如果約束是一個外鍵約束它的類型是「R」的。這也會給你外鍵所涉及的主鍵約束的名稱。

鑑於主鍵約束的名稱,你可以找到的表和列(S)如下:

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

爲了讓生活更輕鬆,你可以加入所有這些查詢在一起。但我把這件事留給你。

+0

它是否可以有多個約束類型。例如類型'P'和'R'的樣本? – Cornelis