我正在研究数据库中间件应用程序。我想检索给定表的所有键值的名称。
例如:
CREATE TABLE foo(一个INTEGER PRIMARY KEY,B VARCHAR(255))
我想向Oracle询问'foo'的主键,我想得到'A'。
这在Oracle中是否可行?我试图搜索他们的文档,但却找不到任何有价值的东西。
提前致谢
卡格
答案 0 :(得分:1)
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的非常好的描述