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

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
...全文
3418 76 打赏 收藏 转发到动态 举报
写回复
用AI写文章
76 条回复
切换为时间正序
请发表友善的回复…
发表回复
美到心痛 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
  • 打赏
  • 举报
回复
加载更多回复(50)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧