检索给定表的关键属性名称

时间:2009-09-02 11:20:53

标签: oracle oracle10g primary-key

我正在研究数据库中间件应用程序。我想检索给定表的所有键值的名称。

例如:

CREATE TABLE foo(一个INTEGER PRIMARY KEY,B VARCHAR(255))

我想向Oracle询问'foo'的主键,我想得到'A'。

这在Oracle中是否可行?我试图搜索他们的文档,但却找不到任何有价值的东西。

提前致谢

卡格

1 个答案:

答案 0 :(得分:1)

Source:

SELECT       cols.table_name
             , cols.column_name
             , cols.position
             , cons.status
             , cons.owner
FROM         all_constraints cons
             , all_cons_columns cols
WHERE        cols.table_name = 'TABLE_NAME'
AND          cons.constraint_type = 'P'
AND          cons.constraint_name = cols.constraint_name
AND          cons.owner = cols.owner
ORDER BY     cols.table_name, cols.position;
  

确保在中键入table_name   大写,因为 Oracle存储所有表   大写的名字。让我们快点   解释此查询的输出。   table_name是表的名称   (以大写字母存储)。 column_name是   作为一部分的列的名称   主键。(也存储在   大写)位置是在的位置   主键。主键可以   包含多个列,所以   了解列的顺序   在主键中非常重要。   status是否表示主要   密钥当前已启用或已禁用。   owner指示拥有的架构   桌子。

ALL_CONSTRAINTS - 这是对ALL_CONSTRAINTS的非常好的描述

ALL_CONS_COLUMNS - 这是对ALL_CONS_COLUMNS的非常好的描述