【问题标题】:Get primary key column of a table in oracleoracle中获取表的主键列
【发布时间】:2017-03-24 19:22:30
【问题描述】:

我对使用 Oracle 完全陌生,所以我可能没有使用正确的术语。请原谅我。

我有以下查询可以帮助我获取 SQL Server 中表的主键

SELECT Col.Column_Name, Tab.Table_Name from 
INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab, 
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Col 
WHERE Col.Constraint_Name = Tab.Constraint_Name 
AND Col.Table_Name = Tab.Table_Name 
AND Constraint_Type = 'PRIMARY KEY'
AND Col.Table_Name = 'EmployeeMaster'

所以我想要一些类似的东西,它可以帮助我获取具有主键的表的列名。提前致谢

【问题讨论】:

  • c# 与这个问题有什么关系?
  • @ZoharPeled 抱歉,这是个错误

标签: oracle oracle11g


【解决方案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 中没有“auto_increment”或“identity”列这样的东西。但是,您可以使用序列和触发器轻松建模:
  • 好的。非常感谢
  • Oracle 在 12c 中引入了标识列。虽然问题被标记为[oracle11g],但这在这里没有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多