【问题标题】:SQL query to get primary keys for all tables in sybase ase 15.x along with column namesSQL 查询以获取 sybase ase 15.x 中所有表的主键以及列名
【发布时间】:2015-03-14 01:33:52
【问题描述】:

我使用的是 Sybase ASE 15.5,对这个数据库不熟悉。 开门见山--> 我正在寻找一个 sql 查询,它可以帮助我获取 sybase 中所有表的主键以及声明主键的列名。 例如, 如果我有以下表格, 在 org_id 列上具有主键 PK_org_id 的组织 org_alias 在 alias_id 列上具有主键 PK_alias_id org_temp 在列上具有主键 PK_org_temp_id (org_id,org_name)

那么查询应该返回给我:

  • Table_Name PK_Name Column_name
  • 组织 PK_org_id org_id
  • Org_alias PK_alias_id alias_id
  • Org_temp PK_org_temp_id org_id,org_name

我尝试了以下查询:

select  o.name , i.name
from   sysobjects  o,   sysindexes   i   
where o.id=i.id  
and i.indid = 1  
and o.type = 'U'

但它只返回表名及其主键。 我也想要列名。

请帮忙!

【问题讨论】:

标签: sql constraints sybase sap-ase unique-constraint


【解决方案1】:

使用内置函数index_col(object_name, indexid, N [,owner_id])。 这使您可以检索特定索引的第 N 列。使用不同的 N 值多次调用它,例如将其与 master..spt_values 连接,其中 type = 'P' 并将数字列提供为 N。

【讨论】:

  • 感谢您的回复@Rob。我正在专门寻找一个 sql 查询,它将向我输出表名、主键名和定义它的列。你也可以分享一下吗?
【解决方案2】:

如果您不想编写自己的查询代码,请查看 ASE 中包含的目录过程。 'sp_pkeys' 应该给你你想要的。

【讨论】:

    猜你喜欢
    • 2016-07-10
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多