SQL - 如何提取多字段主键

时间:2013-08-31 16:29:42

标签: sql composite-primary-key

我知道获取数据库表名的查询是:

SELECT * 
FROM information_schema.tables 
WHERE table_type = 'BASE TABLE'

如果主键由多列组成,如何获取表?或者获取特定表的复合主键?

2 个答案:

答案 0 :(得分:1)

如果我理解得很好,你可以选择TSQL。

步骤:

exec sp_pkeys 'table', 'schema'

查看:

此查询将返回具有唯一约束的相关数据e foreign_keys以及

select * from information_schema.key_column_usage
where table_schema = 'schema' and table_name = 'table'

如果您想获得与主键相关的列,您可以尝试类似下面的内容。我认为它可以随着数据库版本而改变,我现在不确定。

select * 
  from information_schema.key_column_usage as k
 where table_schema = 'schema' and table_name = 'table'
   and constraint_name = (
    select name 
      from sysobjects as u
     where k.table_name = object_name(u.parent_obj)
       and u.xtype = 'PK')
  order by table_schema, table_name, ordinal_position

如果不是答案,请提供更多详细信息。

答案 1 :(得分:0)

试试这个:

sp_helpindex 'YourTable'