php - max+1 无干扰
问题描述
当将一行添加到我的表中时,我需要某个列的值为 max+1。这不是自动增量情况,因为它仅在表中的一组行内。换句话说,选择某些行时,这些行的最大值是要确定我添加的下一行,而不是整个表的最大值。所以可以有超过 1 行具有相同的值,在我选择的 x 行中不超过 1 行。
这是它们被添加的时候。这些值也可以稍后通过表单手动更改,并且仍然需要在该集合中保持唯一(当然这很容易)。
这里的问题是,由于在检查最大值和更新它之间存在微小的延迟,从技术上讲,即使这在我使用它的几年中没有发生过,第二个用户“可能”出现并获得相同的最大值值,在原始用户的选择和更新之间。
我宁愿不必锁定表格,而且我正在使用的框架没有内置事务。只是好奇是否有人有其他想法。
我的一个想法是锁定方法本身......当有人使用它时,向数据库添加一个临时行,然后检查它,如果存在,让第二个用户基本上重定向到同一页面,直到该行删除。但是那里涉及很多额外的数据库工作,所以我不知道......
当有限制时,同样的问题也会出现。假设只有 50 人可以添加一行,49 人已添加,2 名成员在选择和更新之间都可以得到相同的 49,并被允许进入。
解决方案
推荐阅读
- html - css覆盖img中心在错误的地方
- excel - 循环中的 vlookup 错误 - 在第一次运行时有效
- html - Swift - MacOS NSPasteboard - 同时支持 HTML 和纯字符串
- ietf-restconf - RESTCONF 调用为 Cisco IOS-XE 获取/更新交换机端口配置的 vlan
- r - 如何刮掉这些信息
- antd - Ant Design Table:我可以在顶部和底部显示分页吗?
- python - 将指定的日期和其他列带入数据框中以确定商店销售额
- amazon-web-services - lettuce redis 6.0.0.RELEASE 未连接到启用传输功能的 AWS Elastic Cache Redis 集群和具有密码的新默认用户
- python - 如何序列化相册中的第一张照片?姜戈
- powershell - Powershell - [DateTime]::TryParseExact,两个明显相同的字符串,一个有效,另一个无效