首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL Server:使用sql查询获取表主键

SQL Server:使用sql查询获取表主键
EN

Stack Overflow用户
提问于 2010-10-14 13:30:20
回答 10查看 513.3K关注 0票数 154

我想使用SQL Server数据库的SQL query来获取特定表的主键。

MySQL中,我使用以下查询来获取表主键:

代码语言:javascript
复制
SHOW KEYS FROM tablename WHERE Key_name = 'PRIMARY'

对于SQL Server,上述查询的等价物是什么?

如果有一个查询同时适用于MySQLSQL Server,那么这将是一个理想的情况。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-10-15 22:01:01

我找到了另一个:

代码语言:javascript
复制
SELECT 
     KU.table_name as TABLENAME
    ,column_name as PRIMARYKEYCOLUMN
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC 

INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KU
    ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY' 
    AND TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME 
    AND KU.table_name='YourTableName'

ORDER BY 
     KU.TABLE_NAME
    ,KU.ORDINAL_POSITION
; 

我已经在SQL Server 2003/2005上对此进行了测试

票数 97
EN

Stack Overflow用户

发布于 2010-10-14 14:47:29

我还为SQL Server找到了另一个:

代码语言:javascript
复制
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + QUOTENAME(CONSTRAINT_NAME)), 'IsPrimaryKey') = 1
AND TABLE_NAME = 'TableName' AND TABLE_SCHEMA = 'Schema'
票数 164
EN

Stack Overflow用户

发布于 2010-10-14 13:39:20

使用SQL SERVER 2005,您可以尝试

代码语言:javascript
复制
SELECT  i.name AS IndexName,
        OBJECT_NAME(ic.OBJECT_ID) AS TableName,
        COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName
FROM    sys.indexes AS i INNER JOIN 
        sys.index_columns AS ic ON  i.OBJECT_ID = ic.OBJECT_ID
                                AND i.index_id = ic.index_id
WHERE   i.is_primary_key = 1

可在SQL SERVER – 2005 – Find Tables With Primary Key Constraint in Database找到

票数 65
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3930338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档