首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server Information_Schema

SQL Server Information_Schema
EN

Stack Overflow用户
提问于 2019-09-06 18:36:06
回答 1查看 54关注 0票数 0

我想通过SQL语句检查表的主键,我使用下面的SQL:

代码语言:javascript
复制
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'PRIMARY KEY'
AND TABLE_NAME = 'T_ODSIN_DRG_BP_ROLE_DET'

但是我只是得到了约束名称,但是我想看看主键中包含哪些列,有什么方法可以做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-06 18:41:29

只需加入INFORMATION_SCHEMA.KEY_COLUMN_USAGE即可

代码语言:javascript
复制
IF OBJECT_ID('dbo.TestPKTable') IS NOT NULL
    DROP TABLE dbo.TestPKTable

CREATE TABLE dbo.TestPKTable (
    FirstPKColumn INT, 
    SecondPKColumn INT, 
    CONSTRAINT PK_TestPKTable PRIMARY KEY (FirstPKColumn, SecondPKColumn))

SELECT 
    PK.CONSTRAINT_NAME,
    PK.TABLE_CATALOG,
    PK.TABLE_SCHEMA,
    PK.TABLE_NAME,
    CU.COLUMN_NAME,
    CU.ORDINAL_POSITION
FROM 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS PK
    INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON 
        PK.CONSTRAINT_NAME = CU.CONSTRAINT_NAME AND
        PK.CONSTRAINT_CATALOG = CU.CONSTRAINT_CATALOG AND
        PK.CONSTRAINT_SCHEMA = CU.CONSTRAINT_SCHEMA
WHERE
    PK.CONSTRAINT_TYPE = 'PRIMARY KEY'
ORDER BY
    PK.CONSTRAINT_NAME,
    CU.ORDINAL_POSITION

结果:

代码语言:javascript
复制
CONSTRAINT_NAME     TABLE_CATALOG   TABLE_SCHEMA    TABLE_NAME  COLUMN_NAME     ORDINAL_POSITION
PK_TestPKTable      TestDB          dbo             TestPKTable FirstPKColumn   1
PK_TestPKTable      TestDB          dbo             TestPKTable SecondPKColumn  2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57820413

复制
相关文章

相似问题

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