[工作备忘][不申精]获得单主键表的主键函数

guguda2008 guguda2008 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
工作关系需要通过表名批量生成SQL脚本,其中就涉及到获取主键的需求,之前都是用一次写一次的,这次有点空,就写了个小函数,因为我库里规定业务表都是单主键,所以这函数只针对单主键。
USE TEMPDB
GO
IF OBJECT_ID('TB_TEST') IS NOT NULL DROP TABLE TB_TEST
GO
CREATE TABLE TB_TEST(
TEST_ID INT PRIMARY KEY
,VAL VARCHAR(50)
)
GO
IF OBJECT_ID('FUN_MU_GET_PK') IS NOT NULL DROP FUNCTION FUN_MU_GET_PK
GO
CREATE FUNCTION FUN_MU_GET_PK(@TBNAME VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @PK VARCHAR(100)

SELECT @PK=T3.NAME
FROM SYS.INDEXES T1
INNER JOIN SYS.INDEX_COLUMNS T2 ON T1.OBJECT_ID=T2.OBJECT_ID AND T1.INDEX_ID=T2.INDEX_ID
AND T2.is_included_column=0 AND T1.is_primary_key=1
INNER JOIN SYS.COLUMNS T3 ON T2.OBJECT_ID=T3.OBJECT_ID AND T2.COLUMN_ID=T3.COLUMN_ID
WHERE T1.OBJECT_ID=OBJECT_ID(@TBNAME)

RETURN @PK
END
GO
SELECT DBO.FUN_MU_GET_PK('TB_TEST')
--TEST_ID
...全文

相关推荐

评论 76
收藏 已收藏
分享
返回顶部
guguda2008
应用实例 27,579 成员 68,540 内容