Php-插入自动增量值-用于父/子表-并发问题

Php-插入自动增量值-用于父/子表-并发问题,php,mysql,concurrency,lookup-tables,Php,Mysql,Concurrency,Lookup Tables,考虑一对多关系的简单模式。父表的Id在子表中引用 在php中,我想使用语句mysql\u query($query)在表中插入一行。然后我将使用mysql\u insert\u id()获取最后一个插入行的id。然后,我将使用此id将另一行插入到子表中 我的问题是,由于一个php页面可能会同时发生多个请求,如果上面的两个语句不是一个接一个地运行(例如,在父级上发生两个插入,然后在子级上发生两个插入),该怎么办?可能存在并发问题。那么我们如何克服这个问题呢 有什么想法吗?当您调用它时,会获取该连接

考虑一对多关系的简单模式。父表的Id在子表中引用

在php中,我想使用语句
mysql\u query($query)
在表中插入一行。然后我将使用
mysql\u insert\u id()
获取最后一个插入行的id。然后,我将使用此id将另一行插入到子表中

我的问题是,由于一个php页面可能会同时发生多个请求,如果上面的两个语句不是一个接一个地运行(例如,在父级上发生两个插入,然后在子级上发生两个插入),该怎么办?可能存在并发问题。那么我们如何克服这个问题呢


有什么想法吗?

当您调用它时,会获取该连接的最后一个插入id,这样两个PHP脚本就不会相互干扰。

当您调用它时,会获取该连接的最后一个插入id,这样两个PHP脚本就不会相互干扰。

如MySQL文档中所示:

mysql\u insert\u id()的值为 仅受已发表声明的影响 在当前客户端连接中。 它不受语句的影响 由其他客户签发


所以。。。没问题。不过,出于其他原因,我建议使用ORM(如)。

如MySQL文档中所述:

mysql\u insert\u id()的值为 仅受已发表声明的影响 在当前客户端连接中。 它不受语句的影响 由其他客户签发


所以。。。没问题。不过,出于其他原因,我建议使用ORM(比如)。

我认为如果使用mysql\u insert\u id(),应该没问题。你怎么能确定?有链接吗?我想如果你使用mysql\u insert\u id()你应该可以确定吗?有链接吗?你是说所有的ORM(比如Hibernate、实体框架(.net))都会自己解决这个问题吗?我不确定所有这些,但我认为大部分都是这样。首先,保存过程通常是ORM中的一个批处理过程(例如,您创建对象树,然后保存它),所以他们必须以某种方式处理ID。但要了解详细信息,您必须查看每个人的手册,ofc:)那么您的意思是所有的ORM(如Hibernate、Entity Framework(.net))都自己解决这个问题吗?我不确定所有这些,但我认为大多数是。首先,保存过程通常是ORM中的一个批处理过程(例如,您创建对象树,然后保存它),所以他们必须以某种方式处理ID。但有关详细信息,您必须查看每个人的手册,ofc:)