2

我正在手动生成 userId,即以前的 userId+1。

但是如果两个或更多用户读取以前的 userId 并插入新记录。

因此,有可能任何两个或多个用户插入具有相同 userId 的记录

4

2 回答 2

2

您可以将读取先前的用户 ID 并在同一事务中插入记录。

事务必须设置为使用正确的Isoltaion 级别:至少“可序列化”或“可重复读取”。

按照这种方法,用户标识的增量将在事务开始之后和提交之前下降。

RDBMS 将处理竞争条件。

于 2014-07-16T10:33:33.777 回答
0

您应该以某种方式对您的流程进行排队,并确保在给定时间内只处理一个。最简单的方法是在查询之前锁定某些内容select previous userid,并在插入记录后释放锁定。

否则这不是一个好习惯。RDBMS 系统对此有更好的解决方案。在您的 RDBMS 文档中搜索序列、身份或 auto_increment。

于 2014-07-16T10:13:17.463 回答