如果有人在我调用最后一个插入id之前将新数据插入数据库,该怎么办



当我们管理一个大型数据库时,通常我们有多个表通过外键相互连接。

假设我们在TABLE_2中有一个外键,它是TABLE_1的主键。因此,每当我们将新数据插入TABLE_1时,我们都必须获得"最后一个插入id",并将其作为外键放入TABLE_2中。

现在让我们考虑一个场景(不管任何编程语言(-

我在TABLE_1中插入了一行,然后调用了一个方法来获取最后插入的id。但在我调用该方法之前的几分之一秒内,其他人也向同一个表(TABLE_1(插入了新行。

现在我的问题是-由于我已经请求了最后一个插入的id,那么我将获得哪一行id?因为其他人在我后面插入了一行。

这个问题困扰了我很长时间。请某人澄清我的疑虑。提前谢谢。

来自LAST_INSERT_ID:的MySQL手册

生成的ID在每个连接基础。这意味着给定客户端的函数是生成的第一个AUTO_INCREMENT值对于影响AUTO_INCREMENT列的最新语句客户端。此值不会受到其他客户端的影响,即使它们生成自己的AUTO_INCREMENT值。这种行为确保每个客户端都可以检索自己的ID,而不必担心其他客户端的活动,并且不需要锁或交易。

因此,您不需要担心其他用户在您的插入和获得最后一个插入id之间插入数据。

最新更新