一尘不染

SQLite插入-重复键更新(UPSERT)

mysql

MySQL有这样的东西:

INSERT INTO visits (ip, hits)
VALUES ('127.0.0.1', 1)
ON DUPLICATE KEY UPDATE hits = hits + 1;

据我所知,SQLite中不存在此功能,我想知道的是,是否有任何方法可以实现相同的效果而不必执行两个查询。另外,如果这不可能,那么您更喜欢什么:

  1. SELECT +(插入或更新)
  2. UPDATE( 如果UPDATE失败,则 + INSERT )

阅读 522

收藏
2020-05-17

共1个答案

一尘不染

因为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;
2020-05-17