gpt4 book ai didi

sql - 在 MySQL 中盲目使用 INSERT 有缺点吗?

转载 作者:可可西里 更新时间:2023-11-01 07:45:46 25 4
gpt4 key购买 nike

我经常想向表中添加一个值,或者在其键已存在时更新该值。这可以通过多种方式实现,假设在示例中的“user_id”和“pref_key”列上设置了主键或唯一键:

<强>1。盲插入,如果收到重复键错误则更新:

// Try to insert as a new value
INSERT INTO my_prefs
(user_id, pref_key, pref_value)
VALUES (1234, 'show_help', 'true');

// If a duplicate-key error occurs run an update query
UPDATE my_prefs
SET pref_value = 'true'
WHERE user_id=1234 AND pref_key='show_help';

<强>2。检查是否存在,然后选择或更新:

// Check for existence
SELECT COUNT(*)
FROM my_prefs
WHERE user_id=1234 AND pref_key='show_help';

// If count is zero, insert
INSERT INTO my_prefs
(user_id, pref_key, pref_value)
VALUES (1234, 'show_help', 'true');

// If count is one, update
UPDATE my_prefs
SET pref_value = 'true'
WHERE user_id=1234 AND pref_key='show_help';

第一种方式似乎更可取,因为它只需要一次查询新插入和两次更新,而第二种方式总是需要两次查询。有什么我遗漏的,但盲目插入不是个好主意吗?

最佳答案

查看 http://dev.mysql.com/doc/refman/5.0/en/insert-select.html 中的 ON DUPLICATE KEY 语法

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

关于sql - 在 MySQL 中盲目使用 INSERT 有缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/149796/

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