SQL查询以获取sybase ase 15.x中所有表的主键以及列名

时间:2015-01-15 15:38:47

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

我使用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'

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

请帮忙!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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