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

时间:2009-12-03 11:26:22

标签: php mysql concurrency lookup-tables

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

在php中我想使用语句mysql_query($query)在表中插入一行。然后我将使用mysql_insert_id()获取最后插入行的id。然后我将使用此id将另一行插入到子表中。

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

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

当您致电mysql_insert_id()时,它会获取该连接的最后插入ID ,因此两个PHP脚本不会相互干扰。

答案 1 :(得分:2)

与MySQL文档中一样:

  

mysql_insert_id()的值是   仅受发布的声明影响   在当前客户端连接中。   它不受陈述的影响   由其他客户发布。

所以......没问题。虽然,出于其他原因,我建议使用ORM(如Doctrine)。