概述
推荐方法:使用单独的表来做生成编号的操作
-
SQL code
-
-- 编号表 CREATE TABLE dbo.tb_id( name varchar ( 50 ) -- 业务名称,比如是用于某个表的id 生成的表名 PRIMARY KEY , id int , -- 当前编号 seed int -- 编号增长值 ); GO
使用之前初始化编号表,填入业务以及初始的编号 如:2012081900001 和每次增长的增长值,通常为1
当要取号的时候,取编号表的对应业务编号,并进行update操作来取号
这样编号表中可能只有几行到几十行的数据,数据量很小,取号效率非常高,同时用update 避免了并发去重号的问题
以下附上取号的操作代码供大家参考
-
SQL code
-
-- 取下一个编号的公共存储过程 CREATE PROC dbo.p_GetID @name varchar ( 50 ), @id int OUTPUT AS SET NOCOUNT ON ; UPDATE dbo.tb_id SET @id = id + seed, id = @id WHERE name = @name ; GO -- 使用之前,先初始化一条数据 INSERT dbo.tb( name, id, seed ) VALUES ( ' test ' , 0 , 1 ) ; -- 需要新的id 时,调用公用的存储过程进行获取 DECLARE @id int ; EXEC dbo.p_GetID @name = N ' test ' , @id = @id OUTPUT ; SELECT 当前编号 = @id , 需要格式化的话 = ' XS ' + RIGHT ( 1000000 + id, 6 ) ;
最后
以上就是美丽黄豆为你收集整理的生成流水号的全部内容,希望文章能够帮你解决生成流水号所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复