MySQL-php的pdo数据库引擎使用lastInsertId在高并发情况下会不会返回错误的id?

发布于 2017-01-21 13:15:38 字数 513 浏览 1544 评论 1

pdo引擎的lastInsertId会返回用户插入数据库的最新一个自增id值,这里有点理解疑问?

是返回本数据库的最后插入的一个自增id,
还是只返回现在使用用户的最后插入的自增id?如果是这个?用数据库链接还是session还是什么来确定这个用户?

主要是实际项目中,要做个文章版本系统,需要一个功能,
版本系统表:
id versionid content

更新文章不是updat,而是insert,所以一篇文章会有好多id不同,versionid相同的版本,就是第一次插入文章时的id,检索文章不用自增id而是用版本id,查询某版本id下的最新一篇。

第一次发布文章,插入新内容到数据库后,马上要搜索这篇新插入文章的id并把id值update到本条信息的版本字段内,现在用lastinsertid。

我担心的是,如果网站并发高了,在用户刚刚插入文章还没有更新文章的版本id的时候,又有其他用户插入新文章,那lastinsertid会不会获取到其他用户插的新文章id而不是原来本用户的最新id???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑾兮 2017-03-23 13:35:41

不会。
LAST_INSERT_ID 是基于单个数据库连接的,它会返回当前连接最后一次insert操作的ID,并不是整个数据库最后一次insert操作。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文