我正在手动生成 userId,即以前的 userId+1。
但是如果两个或更多用户读取以前的 userId 并插入新记录。
因此,有可能任何两个或多个用户插入具有相同 userId 的记录
我正在手动生成 userId,即以前的 userId+1。
但是如果两个或更多用户读取以前的 userId 并插入新记录。
因此,有可能任何两个或多个用户插入具有相同 userId 的记录
您可以将读取先前的用户 ID 并在同一事务中插入记录。
事务必须设置为使用正确的Isoltaion 级别:至少“可序列化”或“可重复读取”。
按照这种方法,用户标识的增量将在事务开始之后和提交之前下降。
RDBMS 将处理竞争条件。
您应该以某种方式对您的流程进行排队,并确保在给定时间内只处理一个。最简单的方法是在查询之前锁定某些内容select previous userid
,并在插入记录后释放锁定。
否则这不是一个好习惯。RDBMS 系统对此有更好的解决方案。在您的 RDBMS 文档中搜索序列、身份或 auto_increment。