Sqlserver 利用时间戳 + 自增长ID 生成流水号 模拟并发请求生成重复ID 解决方法

2022/1/10 19:06:43

本文主要是介绍Sqlserver 利用时间戳 + 自增长ID 生成流水号 模拟并发请求生成重复ID 解决方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 事件起因:

当在sqlserver 中利用 时间戳(22010110) + 请求终端ID (1001) + 四位流水号(开始0001) ;

四位流水号算法
创建表TZD_LSH ;其中id是 自增长 ;系数1

    insert  into TZD_LSH (Hoisd) select @hospcode  
    select newid = max(id) from TZD_LSH

2. 生产环境遇到 客户端获取到2个相同的ID

3. 模拟请求:在过程中获取max(int) 的地方加上延迟执行 waitfor delay '00:00:01' 、利用Jmeter 创建10个请求。


可以看到实际请求到的确实重复

4.解决办法: 利用sqlserver 函数 SCOPE_IDENTITY() ;

    insert  into TZD_LSH (Hoisd) select @hospcode  
    select newid=SCOPE_IDENTITY()

5.再次利用Jmeter请求10次无重复Id



这篇关于Sqlserver 利用时间戳 + 自增长ID 生成流水号 模拟并发请求生成重复ID 解决方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程