怎么在SQL中利用Function创建一个长整形的唯一ID
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇文章给大家分享的是有关怎么在SQL中利用Function创建一个长整形的唯一ID,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现方
千家信息网最后更新 2026年10月31日怎么在SQL中利用Function创建一个长整形的唯一ID
本篇文章给大家分享的是有关怎么在SQL中利用Function创建一个长整形的唯一ID,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
实现方法
一开始在C#等面向对像语言中编写一个获取PK的方法,那是很顺序就完成了。
接着是SQL中,如果要用脚本导入数据,那就要提供一个SQL的方法来获取PK。
最初设计PK的组成:时间(yyMMddHHmmssmsS) + '4位随机数' ,于是卡卡很快完成dbo.pk()
Create function dbo.pk()returns bigintasbegin declare @pk as bigint,@fix bigint,@idx int,@ts as datetime set @ts = GETDATE() set @pk = convert(bigint,convert(varchar(6),@ts,12) + replace(convert(varchar(12),@ts,114),':',''))*10000 select @idx = A*10000 from vRand return (@pk + @idx)endgo
然后来获取一个10000PK测试:
declare @tab as table(pk bigint)declare @i as integerset @i =0while(@i<10000)begininsert @tabselect dbo.pk() set @i = @i+1endselect pk,count(1) cntfrom @tab group by pk having COUNT(1)>1
oh my god!竟然有30多个重复的。
可见这个方法,做为获取单个PK,那问题不大,但在做批量保存的时候,可能会发生主键冲突。
因此再设计一个支持批量保存的。
既然4位随机数不能保证毫秒级的唯一,那就只能用有序数了,把PK的组成改为:时间(yyMMddHHmmssmsS) + '4位有序数'
再考虑到年份只是2位数,跟面向对像中的PK组成有机会在202x年之后存在冲突,因此增加一个标识 '1'+yy作为年以延长千年虫问题,虽然还是有机会发生冲突,但那也是几百年以后的事情了。
但是为了保持效率和冲突的概率,还是将PK改为:'1'+时间(yyMMddHHmmssms) + '4位有序数'.
接下来又是一顿卡卡卡,dbo.pks(@count)已出:
CREATE function dbo.pks(@count as int)returns @pks table(pk bigint,id int)asbegin declare @pk as bigint,@fix bigint,@idx int,@ts as datetime,@lop int,@i int set @ts = GETDATE() set @pk = convert(bigint,'1'+convert(varchar(6),@ts,12) + replace(convert(varchar(11),@ts,114),':',''))*10000 set @idx =0 set @lop = CEILING(@count/10000.0) set @i = 1 while(@lop >0) begin set @pk = @pk + 10000 set @idx = 0 while(@idx<10000 and @idx<@count) begin insert @pks(pk,id) values(@pk+@idx,@idx+ @i) set @idx = @idx +1 end set @lop = @lop -1 set @i = @i+10000 end returnendgo
批量测试一下
select * from dbo.pks(500000)
正常返回500000行,没有一行重复!
以上就是怎么在SQL中利用Function创建一个长整形的唯一ID,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
方法
冲突
序数
时间
更多
机会
知识
篇文章
还是
问题
随机数
卡卡
测试
设计
实用
接下来
一行
不大
事情
位数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
重庆互联网络科技
互联网科技作文
南京欣网互联网科技
广州善班互联网科技
上游互联网科技
青岛中康互联网医疗科技有限公司
常德市电业局互联网科技部
互联网新科技动漫ppt素材
华夏恒生互联网科技013171
内蒙古九一互联网科技
美国互联网科技公司
东营紫格互联网科技
昆明中奇联合互联网科技
福仕德教育科技互联网
网互联网络科技
瑞安市蟠桃会互联网科技有限公司
互联网科技创业有什么好项目
高科技和互联网的现代国家
每日互联网科技新闻
颐高云石互联网科技
中国互联网科技工作委员会毛军
互联网科技官网
科技股互联网
喔噻互联网科技
浩特互联网科技
宁夏众和广鑫互联网科技有限公司
互联网对科技的发展
威龙国际互联网科技公司
福建互联网展示科技馆设计
科技互联网专业工作会议发言稿