为了账号安全,请及时绑定邮箱和手机立即绑定

SQLite INSERT - ON DUPLICATE KEY UPDATE(UPSERT)

SQLite INSERT - ON DUPLICATE KEY UPDATE(UPSERT)

收到一只叮咚 2019-07-31 18:51:10
SQLite INSERT - ON DUPLICATE KEY UPDATE(UPSERT)MySQL有这样的东西:INSERT INTO visits (ip, hits)VALUES ('127.0.0.1', 1)ON DUPLICATE KEY UPDATE hits = hits + 1;据我所知,SQLite中不存在此功能,我想知道的是,如果有任何方法可以实现相同的效果而无需执行两个查询。此外,如果无法做到这一点,您更喜欢什么:SELECT +(INSERT或UPDATE)或更新(如果UPDATE失败,则为 + INSERT )
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

从3.24.0开始,SQLite也支持upsert,所以现在你可以简单地编写以下内容


INSERT INTO visits (ip, hits)

VALUES ('127.0.0.1', 1)

ON CONFLICT(ip) DO UPDATE SET hits = hits + 1;


查看完整回答
1 反对 回复 2019-07-31
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

INSERT OR IGNORE INTO visits VALUES ($ip, 0);UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;

这要求“ip”列具有UNIQUE(或PRIMARY KEY)约束。


查看完整回答
反对 回复 2019-07-31
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

我更喜欢UPDATE (+ INSERT if UPDATE fails)。更少的代码=更少的错误。


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 3178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信