gpt4 book ai didi

sql - 插入或更新混淆

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:56 24 4
gpt4 key购买 nike

我对如何处理在 sqlite 中更新一行(如果存在)或插入它(如果不存在)的情况感到有点困惑。对于这个问题的每个答案,我似乎都看到了不同的解决方案。什么是最有效或最简单的方法?编辑:我的意思是 sqlite,抱歉

最佳答案

对于 sqlite:

CREATE TABLE foo (bar INTEGER UNIQUE, baz INTEGER)
INSERT INTO foo (bar,baz) VALUES (1, 2)

这会导致 IntegrityError:柱状图不是唯一的:

INSERT INTO foo (bar,baz) VALUES (1,3)

但是使用sqlite你可以upsert通过做INSERT OR REPLACE :

INSERT OR REPLACE INTO foo (bar,baz) VALUES (1,3)

不是插入新行,而是因为 bar 等于 1 的行已经存在,所以 baz 的值更新为 3。


对于 MySQL:

在表上创建一个 UNIQUE 索引。然后使用

INSERT INTO table (...) values (...) ON DUPLICATE KEY UPDATE field = ...

例如:

CREATE UNIQUE INDEX mytable_index ON mytable (field1,field2)

INSERT INTO mytable (field1,field2,field3) values (val1,val2,val3)
ON DUPLICATE KEY UPDATE field3 = val3

这要求 mytable 中的 (field1,field2) 对是唯一的。然后当你插入时,要么你会得到一个新行,要么,如果 (val1,val2) 已经存在于 mytable 中,field3 的值将被更新。

关于sql - 插入或更新混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4059874/

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