【问题标题】:MYSQL last_insert_id() and concurrencyMYSQL last_insert_id() 和并发
【发布时间】:2014-02-06 18:28:24
【问题描述】:

我有一个简单的 MYSQL 问题。如果我在一个网页上运行 INSERT QUERY 之后立即进行包含 LAST_INSERT_ID() 的查询,该网页有许多并发用户访问执行 INSERT 的其他页面strong> 操作是否会导致 LAST_INSERT_ID() 的值被掺假/损坏?

【问题讨论】:

    标签: mysql concurrency


    【解决方案1】:

    不,它会从当前连接返回插入 id。只要您的脚本没有进行任何其他插入,您就会得到您想要的。

    另外请注意,这只会返回生成的 ID(例如自动增量)。如果您正在创建自己的 ID,它不会将其返回给您。

    【讨论】:

    • 如果从一个连接中插入多个并行线程怎么办,线程安全吗?或者我需要一个用于 insert + LAST_INSERT_ID() 的事务范围?我找不到与该点相关的信息:/
    • 你有任何文件来支持这个声明吗?
    • 并行运行的多个线程可以使用相同的连接。所以目前可以并行执行插入和 LAST_INSERT_ID。目前尚不清楚这种查询组合将如何在并发上下文中工作。
    • last_insert_id 如果之前在同一连接上运行另一个查询,则会失败
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2011-09-23
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    相关资源
    最近更新 更多