最大+1,无干扰

时间:2018-08-14 03:53:26

标签: php mysql

当将一行添加到我的表中时,我需要某个列的值是max + 1。这不是自动递增的情况,因为它仅在表中的一组行中。换句话说,当选择某些行时,THOSE行的最大值是确定我添加的下一行的条件,而不是整个表的最大值。因此,在我选择的x行中,最多可以有1个行具有相同的值,而最多只能有1行。

这是添加它们的时间。以后还可以通过表单手动更改值,并且仍然需要在该集合中保持唯一(当然这很容易)。

这里的问题是,从技术上检查最大值与更新最大值之间存在微小的延迟,即使我使用此方法多年以来都没有发生过,第二个用户“可以”出现并得到相同的最大值,介于原始用户的选择和更新之间。

我宁愿不必锁定表,并且我正在使用的框架没有内置的事务。请问是否有人有其他想法。

我曾经的一个想法是锁定方法本身...当有人使用它时,向数据库添加一个临时行,然后检查它是否存在,让第二个用户基本上重定向到同一页面,直到该行被删除。但是那里涉及很多额外的数据库工作,所以我不知道...

存在限制时,也会发生同样的问题。假设只有50个人可以添加一行,其中49个人已添加,两个成员在选择和更新之间都可以获得相同的49个人,并且可以加入。

0 个答案:

没有答案