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 插入 - 重复键更新 (UPSERT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717590/