gpt4 book ai didi

php - 避免在 INSERT 查询中重复唯一键

转载 作者:可可西里 更新时间:2023-11-01 06:39:39 24 4
gpt4 key购买 nike

我有一个 MySQL 查询,如下所示:

INSERT INTO beer(name, type, alcohol_by_volume, description, image_url) VALUES('{$name}', {$type}, '{$alcohol_by_volume}', '{$description}', '{ $image_url}')

唯一的问题是 name 是一个唯一值,这意味着如果我遇到重复项,我会得到这样的错误:

Error storing beer data: Duplicate entry 'Hocus Pocus' for key 2

有没有一种方法可以确保 SQL 查询不会在不对整个数据库运行 SELECT 查询的情况下尝试添加已经存在的唯一值?

最佳答案

您当然可以像这样使用 INSERT IGNORE INTO:

INSERT IGNORE INTO beer(name, type, alcohol_by_volume, description, image_url) VALUES('{$name}', {$type}, '{$alcohol_by_volume}', '{$description}', '{$image_url}')

您也可以使用 ON DUPLICATE KEY,但如果您只是不想添加一行,INSERT IGNORE INTO 是更好的选择。 ON DUPLICATE KEY 更适合在存在重复项时执行更具体的操作。

如果您决定使用 ON DUPLICATE KEY - 避免在具有多个唯一索引的表上使用此子句。如果您有一个包含多个唯一索引的表,ON DUPLICATE KEY-子句可能会产生意想不到的结果(您真的无法 100% 控制将要发生的事情)

示例: - 下面这一行仅更新一行(如果类型为 1 且 alcohol_by_volume 为 1(并且两列都是唯一索引))

ON DUPLICATE KEY UPDATE beer SET type=3 WHERE type=1 or alcohol_by_volume=1

总结一下:

ON DUPLICATE KEY 只是在有重复时没有警告或错误地完成工作。

INSERT IGNORE INTO 会在存在重复项时发出警告,但除此之外,只需忽略将重复项插入数据库即可。

关于php - 避免在 INSERT 查询中重复唯一键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16338578/

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