2011-03-09 158 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;