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

本文介绍了一个SQLServer自定义函数udf_KeyColumns,用于获取表的键列信息,并通过存储过程usp_PrimaryKey实现查询特定表的主键名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

ExpandedBlockStart.gif 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 ])
)

 

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

ExpandedBlockStart.gif 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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值