MySQL有类似这样的东西:
INSERT INTO visits (ip, hits)
VALUES ('127.0.0.1', 1)
ON DUPLICATE KEY UPDATE hits = hits + 1;
据我所知,SQLite中不存在这个特性,我想知道的是,是否有任何方法可以在不执行两个查询的情况下实现相同的效果。另外,如果这是不可能的,您更喜欢什么:
,则插入
发布于 2018-11-01 18:23:46
Since 3.24.0 SQLite also supports upsert,所以现在您可以简单地编写以下代码
INSERT INTO visits (ip, hits)
VALUES ('127.0.0.1', 1)
ON CONFLICT(ip) DO UPDATE SET hits = hits + 1;
发布于 2010-04-27 10:30:42
INSERT OR IGNORE INTO visits VALUES ($ip, 0);
UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;
这要求"ip“列具有唯一(或主键)约束。
编辑:另一个很好的解决方案:https://stackoverflow.com/a/4330694/89771。
发布于 2010-04-27 07:21:16
我更喜欢UPDATE (+ INSERT if UPDATE fails)
。更少的代码=更少的错误。
https://stackoverflow.com/questions/2717590
复制相似问题