首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉威尔9汽车增量,如何在自动计数+ 1之前先填补数字缺口?

拉威尔9汽车增量,如何在自动计数+ 1之前先填补数字缺口?
EN

Stack Overflow用户
提问于 2022-09-18 16:37:50
回答 1查看 239关注 0票数 2

blade表单中,我从数据库中获得最新/最高的数字,并在创建新数据时将其添加1:

代码语言:javascript
复制
<input type="number" min="0" class="form-control @error('ir_number') is-invalid @enderror" name="ir_number" placeholder="IR Number"
   value="{{ DB::table('cases_reports')->get('ir_number', $report->ir_number)->max('ir_number') + 1 }}"/>

它的工作原理是应该的,但我如何才能指定首先填补数字之间的空白呢?

e.g. 1 - 5. create 2, 3, 4 first before creating 6

另外,有时用户删除一个记录,我如何也填写那个被删除的数字然后继续计数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-19 10:16:37

不建议重用标识符、主auto_increment或不重用。该值应该表示单个entity的唯一标识,并且回收值不可避免地会引起冲突/混淆。

考虑一下您的发票方案。有人生成一张发票,该发票被分配给非数据库派生的ir_number of 001。生成了更多的发票,现在您在005。删除了带有ir_number 003的发票,但是已经生成了该发票,因此有人有一个带有该ir_number的发票。

生成一个新的发票,您的应用程序确定003是可重用的,因此将这个新发票指定为ir_number of 003。现在您有了两张发票,它们具有相同的ir_number。那么,如果有人关心发票003,那是哪一个呢?

另外,考虑同时生成两个发票的场景。这可能导致死锁/争用条件,试图退出或使用下一个可用的ir_number。您可以在创建之前和期间进行一些验证和/或其他检查,但这是额外的工作。

考虑一下您正在尝试实现的目标,重用ir_number真的有意义吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73764582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档