最后插入ID方法可靠吗

Don*_*Joe 1 php mysql pdo last-insert-id

以下情况。

我们有2个脚本,都插入到表中,然后lastInsertId()用于从自动增量列中获取值。

如果这两个脚本是并行执行的,我们确定它们不会弄乱结果吗?


实时:

时间1:脚本1->插入。(创建的ID = 1)

时间1:脚本2->插入。(创建的ID = 2)

(数据库可能使用锁/信号量来处理此问题)

Q1。时间2:脚本2-> lastInsertId()返回1还是2?它是确定性的吗?

Q2。那么顺序插入呢?

script.php

$statement1->insert('john'); // id = 1
$statement2->insert('mary'); // id = 2

echo $statement1->lastInsertId();
// is it 1 or 2? Is this also deterministic? 
Run Code Online (Sandbox Code Playgroud)

Mad*_*tel 5

是的,它是可靠的。

如果您认为一个表每秒将有成百上千的插入,请考虑不要使用索引或使用最少数量的索引。如果是MySQL,则偏爱MyISAM表。

就你而言

Q1。时间2:脚本2-> lastInsertId()返回1还是2?它是确定性的吗?

返回第二个查询的ID。

Q2。那么顺序插入呢?

您必须确保在插入查询之后询问lastInsertId。

希望对您有帮助。