MySQL ON DUPLICATE KEY 能否返回最后插入或更新的 ID?
在 MySQL 中,INSERT ... ON DUPLICATE KEY UPDATE 语句允许在单个查询中执行插入或更新操作。然而,获取受影响行的 ID 可能具有挑战性。
通常,LAST_INSERT_ID() 函数返回新插入记录的 ID。更新操作后,它仍然没有意义。要解决此问题,您可以利用带有 LAST_INSERT_ID() 的表达式,如 MySQL 文档所述。
具体来说,创建一个更新 id 字段(本例中为 AUTO_INCRMENT 列)并包含 LAST_INSERT_ID(expr ) 作为一个表达式,使其有意义更新。
示例:
考虑一个 id 列为 AUTO_INCRMENT 的表。要更新或插入行并检索受影响的 ID:
INSERT INTO table (a, b, c) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id), c = 3;
此方法可确保 LAST_INSERT_ID() 提供受影响行的 ID,无论插入或更新操作如何,从而无需第二个查询来获取ID。
以上是MySQL 的 ON DUPLICATE KEY UPDATE 如何返回受影响的行 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!