首页 新闻 赞助 找找看

.net 并发导致,录入数据库的两条数据,非主键字段一致的解决办法。

0
[已解决问题] 解决于 2019-11-13 14:47

在创建人员时,系统会自动分配工号,工号从000开始一次增长到999 ;人员创建时,获取工号的做大值+1作为新工号存入数据库。但有两个人同时(精确到毫秒,都相同)创建人员时,取到的最大值都一样,导致两个人工号一致。求解决办法?

six月的主页 six月 | 初学一级 | 园豆:141
提问于:2019-02-22 13:23
< >
分享
最佳答案
0

你就先插入数据库返回当前行ID
用当前行id-上一行id+上一行工号再赋值给工号字段
或者你加个锁.或者给工号列加个唯一索引.

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2019-02-22 13:52

表加锁,解决了。

six月 | 园豆:141 (初学一级) | 2019-02-22 17:25
其他回答(3)
0

设置唯一索引,如果重复了,提醒用户刷新后再试

会长 | 园豆:12401 (专家六级) | 2019-02-22 14:39
0

1 guid
2 lock

猝不及防 | 园豆:2731 (老鸟四级) | 2019-02-22 16:16
0

SQL Server 跟 PGSQL 都有 Sequence 功能,用一个专门的 Sequence 来生成工号,然后在插入的时候使用 next_value_for 这样的东西来获取工号,这样应该就不会重复了。当然,给工号列设置唯一索引也是必须的。

不如隐茶去 | 园豆:559 (小虾三级) | 2019-02-22 16:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册