【发布时间】:2009-09-02 19:40:55
【问题描述】:
我正在再次开发数据库中间件应用程序。我想检索给定表的所有键值的名称。
例如:
创建表 foo(A 整数主键,B VARCHAR(255))
我想向 Oracle 询问 'foo' 的主键,我想得到 'A'。
这在 Oracle 中是否可行?我试图搜索他们的文档,但找不到任何有价值的东西。
提前致谢
影
【问题讨论】:
标签: oracle oracle10g primary-key
我正在再次开发数据库中间件应用程序。我想检索给定表的所有键值的名称。
例如:
创建表 foo(A 整数主键,B VARCHAR(255))
我想向 Oracle 询问 'foo' 的主键,我想得到 'A'。
这在 Oracle 中是否可行?我试图搜索他们的文档,但找不到任何有价值的东西。
提前致谢
影
【问题讨论】:
标签: oracle oracle10g primary-key
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 的一个很好的描述
【讨论】:
create table "lower" (col_id number);] 那么 Oracle 将保留定义的案例 [即对于上面创建的表,select * from lower 将失败,但 select * from "lower" 将成功]。当我无法弄清楚为什么看不到表格时,我遇到了一些自动生成脚本。您还可以通过在表名的开头和结尾添加空格来扰乱 DBA 的思维,从而获得一些乐趣!