MySQL 有这样的东西:
INSERT INTO visits (ip, hits)
VALUES ('127.0.0.1', 1)
ON DUPLICATE KEY UPDATE hits = hits + 1;
据我所知,SQLite 中不存在此功能,我想知道是否有任何方法无需执行两个查询即可达到相同的效果。另外,如果这不可能,您更喜欢什么:
- SELECT +(插入或更新) 或
- 更新(+ INSERT 如果更新失败)
最佳答案
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 .
关于SQLite INSERT - 重复键更新 (UPSERT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55908770/