簡體   English   中英

Oracle表的主鍵

[英]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)。 如何僅獲取屬於用戶架構的表的主鍵

  1. 切換到USER_*視圖而不是ALL_*
  2. 消除查詢中“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM