生成流水号

推荐方法:使用单独的表来做生成编号的操作


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 ) ;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值