SQLite INSERT - ON DUPLICATE KEY UPDATE(UPSERT)

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 )


收到一只叮咚
浏览 3179回答 3
3回答

达令说

从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;

慕的地8271018

INSERT OR IGNORE INTO visits VALUES ($ip, 0);UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;这要求“ip”列具有UNIQUE(或PRIMARY KEY)约束。

慕雪6442864

我更喜欢UPDATE (+ INSERT if UPDATE fails)。更少的代码=更少的错误。
打开App,查看更多内容
随时随地看视频慕课网APP