1. ホーム
  2. sql

[解決済み] SQLiteのINSERT - ON DUPLICATE KEY UPDATE (UPSERT)。

2022-12-14 22:50:27

質問

MySQLにはこのようなものがあります。

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

私が知る限り、この機能はSQLiteには存在しません。私が知りたいのは、2つのクエリを実行することなく同じ効果を達成する方法があるかということです。また、これが不可能な場合、どのような方法が望ましいでしょうか。

  1. SELECT + (INSERTまたはUPDATE) または
  2. 更新 (+ 挿入 UPDATEに失敗した場合 )

どのように解決するのですか?

3.24.0 以降、SQLite はアップサートをサポートするようになりました。 をサポートしているので、以下のように単純に書くことができます。

INSERT INTO visits (ip, hits)
VALUES ('127.0.0.1', 1)
ON CONFLICT(ip) DO UPDATE SET hits = hits + 1;