2011-03-09 185 views

回答

152
SELECT owner, table_name 
    FROM dba_constraints 
WHERE constraint_name = <<your constraint name>> 

會給你表的名字。如果您無權訪問DBA_CONSTRAINTS視圖,ALL_CONSTRAINTSUSER_CONSTRAINTS也應該可以正常工作。

+0

沒有工作,得到錯誤「無效的對象名稱USER_CONSTRAINTS'」。請幫忙。 – 2013-02-05 09:24:32

+7

@JitendraPancholi - '從user_constraints選擇table_name,其中constraint_name ='xxx';'應該適用於任何用戶。你確定你的查詢沒有錯字嗎? '從owner_objects中選擇owner,object_name其中object_name ='USER_CONSTRAINTS''會爲您返回? – 2013-02-05 14:44:07

+0

查詢過添加所有者名稱... 選擇所有者,表名 FROM DBA_CONSTRAINTS WHERE constraint_name命令= <<你的約束名稱>> 和所有者= <> – JavaDragon 2015-09-26 06:39:38

-3
SELECT constraint_name, constraint_type, column_name 
from user_constraints natural join user_cons_columns 
where table_name = "my_table_name"; 

會給你你需要什麼

+0

這個答案是從已知表名,返回約束名,問題說約束名已知需要獲取表名 – 2014-04-24 18:06:02

12

ALL_CONSTRAINTS介紹到當前用戶可以訪問表的約束定義。

DBA_CONSTRAINTS描述了數據庫中的所有約束定義。

USER_CONSTRAINTS描述約束定義上表中當前用戶的模式

Select CONSTRAINT_NAME,CONSTRAINT_TYPE ,TABLE_NAME ,STATUS from 
USER_CONSTRAINTS;