2015-01-15 35 views
0

我正在使用Sybase ASE 15.5和该数据库的陌生人。 直接点 - > 我正在查找一个sql查询,它可以帮助我获取sybase中所有表的主键以及声明主键的列名。 例如, 如果我有以下表, 组织在列具有主键PK_org_id org_id org_alias具有在列主键PK_alias_id alias_id具有在列(org_id,ORG_NAME)用于获取sybase ase 15.x中所有表的主键和列名的SQL查询

主键PK_org_temp_id org_temp那么该查询应该返回我:

  • TABLE_NAME PK_NAME列名
  • 组织PK_org_id org_id
  • Org_alias P K_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' 

但它只返回我与它的主键的表名。 我也想要列名。

请帮忙!

+0

http://stackoverflow.com/questions/14229277/sql-server-2008-get-table-constraints – 2015-01-15 15:57:32

回答

1

使用内置函数index_col(object_name, indexid, N [,owner_id])。 这可让您检索特定索引的第N列。用N的不同值称呼它多次,例如加入master..spt_values,其中type ='P'并提供号码列为N.

+0

感谢您的回复@Rob。我正在寻找一个sql查询,它会输出我的表名,主键名和它定义的列。你也可以分享一下吗? – NewUser3542 2015-01-16 10:58:05

1

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