ITPub博客

首页 > IT职业 > IT图书 > 列出Database所有Key列或者获取表主键名称

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

IT图书 作者:foxsi 时间:2021-09-09 09:48:10 0 删除 编辑

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

5acf072c0001405b00110016.jpgudf_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])
)

 

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

5acf072c0001405b00110016.jpgusp_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)

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4201/viewspace-2812664/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-12

  • 博文量
    74
  • 访问量
    523