gpt4 book ai didi

php - 没有更新时获取INSERT DUPLICATE KEY UPDATE语句的last_insert_id

转载 作者:行者123 更新时间:2023-11-30 22:27:57 24 4
gpt4 key购买 nike

我有一个数据库需要在重复键的情况下处理 2 个特殊场景。在每种情况下,无论是否存在重复记录,我都需要获取该行的唯一 ID

场景 #1 record_count 字段必须递增 1。所以 mysql 语法如下所示

 INSERT INTO (id, value, record_count) VALUES ('foo','bar', 1) ON DUPLICATE KEY UPDATE record_count=record_count+1

在这种情况下,$mysqli->insert_id 方法为我提供了正确的值,无论它是新记录还是重复记录。一切都很好。

场景 #2 record_count 字段不需要递增。我尝试了以下 3 个语句

INSERT IGNORE INTO (id, value, record_count) VALUES ('foo','bar', 1)

INSERT INTO (id, value, record_count) VALUES ('foo','bar', 1) ON DUPLICATE KEY UPDATE record_count=record_count

INSERT INTO (id, value, record_count) VALUES ('foo','bar', 1) ON DUPLICATE KEY UPDATE record_count=record_count+1-1

但在每种情况下,$mysqli->insert_id 都会返回 0,因为我没有更新或插入任何内容。我以为我可以通过加减 1 来愚弄它,但没有成功。

解决方法是什么?我真的不想使用 SELECT 语句(我每分钟发送数百个查询,我真的不想增加系统负载)

最佳答案

因为我没有收到任何答复,这就是我正在做的事情。

我创建了另一个存储 md5 散列的虚拟列。当我不想更新 record_count 时,我会更新虚拟列以便获取列的 ID。

正如@miken32 所建议的,我也可以使用时间戳列(这可能更有效)。

仍在寻找更好的答案(如果存在的话)。

关于php - 没有更新时获取INSERT DUPLICATE KEY UPDATE语句的last_insert_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34714197/

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