sql - SQL Server 信息_架构
问题描述
我想通过 SQL 语句检查表的主键,我使用下面的 SQL:
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'PRIMARY KEY'
AND TABLE_NAME = 'T_ODSIN_DRG_BP_ROLE_DET'
但是我刚刚得到了约束名称,但我想查看主键中包含哪些列,有没有办法做到这一点?
解决方案
加入反对INFORMATION_SCHEMA.KEY_COLUMN_USAGE
:
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
结果:
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
推荐阅读
- scikit-learn - autosklearn 安装。错误:没有名为“sklearn.metrics.classification”的模块
- sql - SQL Cumulative Sum by Group by time 条件
- node.js - 使用 axios 和 firestore 在 React 中构建一个聊天应用程序
- python - 从一维数组创建子数组 - Python
- sql - 如何为 SQL 中的每个特定列应用窗口?
- python - 从文本文件中查找数据并以 json 格式显示结果
- r - 删除带括号的字符串
- scala - 有没有办法在 Play Framework 中翻译动态文本?
- html - div 元素上的样式应用于 div 内的按钮
- python - 将 RGB 深度图与没有内在矩阵的 RGB 图像对齐