[英]Primary keys for an Oracle table
我正在嘗試檢索表名稱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)。 如何僅獲取屬於用戶架構的表的主鍵
USER_*
視圖而不是ALL_*
。 OWNER
列上的條件。 ALL_*
視圖相比, ALL_*
視圖返回查詢模式有權訪問的所有內容,包括該模式擁有的對象 USER_*
視圖僅返回架構所擁有的對象 DBA_*
視圖返回數據庫中的所有對象 因此,您可以查詢USER_*
視圖,也可以查詢在OWNER
列上指定條件的DBA_*
視圖。
在您的情況下,您的查詢可能如下所示。
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;
有關數據字典和視圖及其范圍的更多詳細信息,請參閱概念中的“ 數據字典和動態性能視圖”部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.