使用重复键检索 INSERT/UPDATE 的行 ID
问题:
如何在使用 ON 执行 INSERT 或 UPDATE 后能否检索行的 ID MySQL 中的 DUPLICATE KEY,无需运行单独的查询?
答案:
要实现此目的,您可以使用 LAST_INSERT_ID(expr) 函数作为解决方法。通过将表达式传递给此函数,您可以使 LAST_INSERT_ID 对更新有意义。
说明:
如链接的文档中所述(https://web.archive.org/web/20150329004325/https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html),LAST_INSERT_ID()通常只返回 '成功插入的 ID。
但是,通过在 ON 中使用 LAST_INSERT_ID(expr) DUPLICATE KEY UPDATE 子句,您也可以使其对更新有意义。
例如,如果 'id' 是您的 AUTO_INCREMENT 列,您可以按如下方式修改查询:
INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE>
在这种情况下,如果找到并更新了现有记录,则 LAST_INSERT_ID(id) 将返回更新的 ID,或者如果找到并更新了现有记录,则返回新插入记录的 ID未发现重复项。
以上是MySQL INSERT/UPDATE 使用 ON DUPLICATE KEY 后如何获取行 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!