我正在尝试检索表名EMPLOYEE的主键,如下所示
SELECT cols.column_name
FROM all_constraints cons, all_cons_columns cols
WHERE cols.table_name ='EMPLOYEE'
AND cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position
表EMPLOYEE存在于另一个用户,该用户也有一个名为ID
的主键因此上述查询的结果给出(ID,ID)而不是当前用户的(ID)。如何仅获取属于用户架构的表的主键
答案 0 :(得分:0)
USER_*
次观看,而不是ALL_*
。OWNER
列的条件。ALL_*
视图返回查询架构可以访问的所有内容,包括架构拥有的对象,与USER_*
个视图仅返回架构为DBA_*
次视图返回数据库中的所有对象因此,您可以查询USER_*
次观看,也可以查看指定DBA_*
列条件的OWNER
次观看结果。
在您的情况下,您的查询可能如下所示。
select
cons.table_name
, cons.constraint_name
, cols.column_name
, cols.position
from user_constraints cons, user_cons_columns cols
where cons.constraint_name = cols.constraint_name
and constraint_type = 'P'
order by cons.table_name;
有关数据字典和视图及其范围的更多详细信息,请参阅概念中的Data Dictionary and Dynamic Performance Views部分。