gpt4 book ai didi

MySQL 和 PDO:PDO::lastInsertId 理论上会失败吗?

转载 作者:IT老高 更新时间:2023-10-29 00:19:59 26 4
gpt4 key购买 nike

我一直在思考这个问题。

考虑一个庞大的网络应用程序,比方说,每秒执行数百万个 SQL 查询。

我运行我的代码:

$q = $db->prepare('INSERT INTO Table
(First,Second,Third,Fourth)
VALUES (?,?,?,?)');
$q->execute(array($first,$second,$third,$fourth));

紧接着,我想获取最后一个查询的自动递增 ID:

$id = $db->lastInsertId();

lastInsertId 是否有可能失败,即获取在我的两个代码块之间执行的某些 SQL 插入查询的 ID?

中学:

如果它可能失败,那么堵住这种可能的泄漏的最佳方法是什么?

创建另一个 SQL 查询以从数据库中获取正确的 ID 会更安全吗?

最佳答案

只要 PDO 实现没有做一些非常愚蠢的事情,它就永远是安全的。以下摘自MySQL关于last_insert_id的信息:

The ID that was generated is maintained in the server on a per-connection basis. This means that the value returned by the function to a given client is the first AUTO_INCREMENT value generated for most recent statement affecting an AUTO_INCREMENT column by that client. This value cannot be affected by other clients, even if they generate AUTO_INCREMENT values of their own. This behavior ensures that each client can retrieve its own ID without concern for the activity of other clients, and without the need for locks or transactions.

关于MySQL 和 PDO:PDO::lastInsertId 理论上会失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5931165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com