列出Database所有Key列或者获取表主键名称
从SQL Server的视图INFORMATION_SCHEMA 中用INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE 和INFORMATION_SCHEMA.TABLE_CONSTRAINTS两个视图INNER JOIN在一起,可以列出需要的数据,下面Insus.NET把它写成一个自定义函数:

CREATE FUNCTION [dbo].[udf_KeyColumns]
(
)
RETURNS TABLE
AS
RETURN
(
SELECT kcu.[TABLE_NAME],kcu.[COLUMN_NAME], kcu.[ORDINAL_POSITION],tc.[CONSTRAINT_TYPE]
FROM information_schema.key_column_usage AS kcu
INNER JOIN information_schema.table_constraints AS tc ON
(kcu.table_name = tc.table_name AND kcu.[constraint_name] = kcu.[constraint_name])
)
(
)
RETURNS TABLE
AS
RETURN
(
SELECT kcu.[TABLE_NAME],kcu.[COLUMN_NAME], kcu.[ORDINAL_POSITION],tc.[CONSTRAINT_TYPE]
FROM information_schema.key_column_usage AS kcu
INNER JOIN information_schema.table_constraints AS tc ON
(kcu.table_name = tc.table_name AND kcu.[constraint_name] = kcu.[constraint_name])
)
如果我们想获取某一个表的主键名称,可以写一个存储过程:

CREATE PROCEDURE [dbo].[usp_PrimaryKey] (
@TableName SYSNAME
)
AS
DECLARE @ReturnValue NVARCHAR(MAX)
SELECT @ReturnValue = [COLUMN_NAME] FROM [dbo].[udf_KeyColumns]()
WHERE [CONSTRAINT_TYPE] = 'PRIMARY KEY' AND [TABLE_NAME] = @TableName
SELECT @ReturnValue
@TableName SYSNAME
)
AS
DECLARE @ReturnValue NVARCHAR(MAX)
SELECT @ReturnValue = [COLUMN_NAME] FROM [dbo].[udf_KeyColumns]()
WHERE [CONSTRAINT_TYPE] = 'PRIMARY KEY' AND [TABLE_NAME] = @TableName
SELECT @ReturnValue
引用存储过程:
EXECUTE [dbo].[usp_PrimaryKey] 'Member'
参考相关:
SQL Server自定义函数(Scalar-valued Functions)
SQL Server自定义函数(Table-valued Functions)
标签:
TABLE
, Column
, primary key
, udf
, INFORMATION_SCHEMA
, Unique
, Foreign Key
, CONSTRAINT_COLUMN_USAGE
, TABLE_CONSTRAINTS
, SYSNAME
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2011-01-19 SQL Server LOWER Functions
2011-01-19 SQL Server UPPER Functions
2011-01-19 SQL Server STUFF Functions
2011-01-19 SQL Server CHARINDEX Functions
2010-01-19 水晶报表PUSH方法Demo