在我的数据库中使用两个表并将一个 HTML 表单的数据拆分为两个不同的查询,我遇到了一个问题,即从第一个查询中识别主键以用作第二个查询中的外键。这是我在伪代码中谈论的内容:
$FormData1, $FormData2, ... INSERT INTO table1 //primary key is auto-generated int
$key = SELECT primaryKey FROM table1 WHERE *** Uh-oh!
$otherFormData1, $otherFormData2, $key ... INSERT INTO table2
鉴于系统需要设计成可以发生并发事务,我该如何解决这个问题?如果我知道它一次只会运行一个实例,那么我可以只查询添加的最后一条记录,但我不觉得这是解决我的问题的一个非常“整洁”(甚至安全)的解决方案.
最佳答案
您可以查询 LAST_INSERT_ID()
,但您可以使用 mysqli::insert_id
和 PDO::lastInsertId
方法.请注意,这些都是针对每个连接的,因此即使您有许多插入同时发生在不同的请求中,查询也是安全的。
关于php - 如何在插入记录后立即查询主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18625038/