考虑一个简单的一对多关系模式。父表的 Id 在子表中被引用。
在 php 中,我想使用语句在表中插入一行mysql_query($query)
。然后我将使用mysql_insert_id()
. 然后我将使用这个 id 将另一行插入到孩子的表中。
我的问题是,由于一个 php 页面可能同时发生多个请求,如果上述两个语句没有一个接一个地运行怎么办(例如,在父级上发生了两个插入,然后孩子身上的两个插入物)?可能存在并发问题。那么我们该如何克服呢?
有任何想法吗?
考虑一个简单的一对多关系模式。父表的 Id 在子表中被引用。
在 php 中,我想使用语句在表中插入一行mysql_query($query)
。然后我将使用mysql_insert_id()
. 然后我将使用这个 id 将另一行插入到孩子的表中。
我的问题是,由于一个 php 页面可能同时发生多个请求,如果上述两个语句没有一个接一个地运行怎么办(例如,在父级上发生了两个插入,然后孩子身上的两个插入物)?可能存在并发问题。那么我们该如何克服呢?
有任何想法吗?
当您调用它时,它会获取该连接mysql_insert_id()
的最后插入 id ,因此两个 PHP 脚本不会相互干扰。
如 MySQL 文档中所示:
mysql_insert_id() 的值仅受当前客户端连接中发出的语句的影响。它不受其他客户发表的声明的影响。
所以……没问题。尽管出于其他原因,我建议使用 ORM(如Doctrine)。