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

guguda2008 2012-11-27 02:56:09
加精
工作关系需要通过表名批量生成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
...全文
3353 点赞 收藏 76
写回复
76 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
美到心痛 2013-01-12
學習了,謝謝
回复
yong230 2012-12-05
不知所云。。。。
回复
GPXMMX 2012-12-05
好,顶,好,好!!!!!
回复
kevin6881 2012-12-04
很有用,顶起来
回复
xiangaylian 2012-12-04
引用 60 楼 gogodiy 的回复:
感谢鸭子分享,非常有用!
貌似是个鹅...
回复
cmwapi 2012-12-04
学习了。。。。
回复
回复
Assassin_ 2012-12-03
lz的头像 。 是想表达什么吗.
回复
joyzhong8 2012-12-01
好文章大家顶起来啦
回复
Just_War 2012-11-30
学习了!!!
回复
李淑君0704 2012-11-30
回复
gogodiy 2012-11-29
感谢鸭子分享,非常有用!
回复
zgkzrx2009 2012-11-29
感谢楼主!!
回复
JWloveWTT1023 2012-11-29
好有才华啊~!!!!!!!!!!!!!!!!!!!!!!!很好很强大
回复
VJ1688 2012-11-29
哈哈哈哈哈哈。。。。。
回复
msn2326 2012-11-29
学习了。。。
回复
kevinnewau 2012-11-28
来看看,需要下载东西,积分怎么得
回复
q3962777 2012-11-28
学习学习学习
回复
yuanli75112 2012-11-28
我很喜欢太美了。
回复
xxy469073196 2012-11-28
回复
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2012-11-27 02:56
社区公告
暂无公告