按约束名获取表名

109

已知Oracle约束名。

如何查找应用于该约束的表格名称?

3个回答

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

这将给出表的名称。如果您无法访问DBA_CONSTRAINTS视图,则ALL_CONSTRAINTSUSER_CONSTRAINTS也可以使用。


无法工作,出现错误“无效的对象名称'USER_CONSTRAINTS'”。请帮忙。 - Jitendra Pancholi
9
@JitendraPancholi - select table_name from user_constraints where constraint_name = 'xxx'; 这个查询语句对于任何用户都应该有效。您确定查询中没有拼写错误吗?select owner, object_name from all_objects where object_name = 'USER_CONSTRAINTS' 对于您返回了什么? - Justin Cave
在查询中添加所有者名称...SELECT owner, table_name FROM dba_constraints WHERE constraint_name = <<你的约束名>> and owner = <<所有者名称>> - JavaDragon

18

ALL_CONSTRAINTS 描述了当前用户可以访问的表上的约束定义。

DBA_CONSTRAINTS 描述了数据库中所有约束的定义。

USER_CONSTRAINTS 描述了当前用户模式下表的约束定义。

Select CONSTRAINT_NAME,CONSTRAINT_TYPE ,TABLE_NAME ,STATUS from 
USER_CONSTRAINTS;

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

会给你所需的东西


这个问题是从已知的表名转换成返回约束名,如果题目说已知约束名需要获取表名。 - Jim Ford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接