列出Database所有Key列或者获取表主键名称

SQL Server的视图INFORMATION_SCHEMA 中用INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE 和INFORMATION_SCHEMA.TABLE_CONSTRAINTS两个视图INNER JOIN在一起,可以列出需要的数据,下面Insus.NET把它写成一个自定义函数:

复制代码
udf_KeyColumns
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])
)
复制代码

 

如果我们想获取某一个表的主键名称,可以写一个存储过程:

复制代码
usp_PrimaryKey
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
复制代码

 

引用存储过程:

EXECUTE [dbo].[usp_PrimaryKey] 'Member'

 

参考相关:

SQL Server自定义函数(Scalar-valued Functions)

SQL Server自定义函数(Table-valued Functions)

 

posted @   Insus.NET  阅读(419)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· .NET 9 new features-C#13新的锁类型和语义
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 《SpringBoot》EasyExcel实现百万数据的导入导出
历史上的今天:
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
点击右上角即可分享
微信分享提示