iPhoneでSQLite3を使う12(INSERT OR REPLACE文)

SQLiteでテーブルにデータを追加する際、あれば更新なければ追加ということがしたかったので
1.あるかどうかのチェックをSELECT文
2-1.あればUPDATE文
2-2.なければINSERT文
という形で実装していたのですが、なければSELECT→INSERT、あればDELETE→INSERTという動きになります。常に2回SQLを発行するのがもったいない。
他のDBでは、1文で処理できるSQLがあるのですが(OracleのMERGE、MySQLのON DUPLICATE KEY)、SQLiteでは無いと思っていました。
よくよく調べてみると、INSERT OR REPLACEというのがあって、INSERT時にPRIMARY KEY制約、UNIQUE制約で重複していればDELETEを自動でしてくれるみたいです。

INSERT OR REPLACE INTO テーブル名 VALUES (値, 値, 値, 値…)

実行すると

sqlite> INSERT INTO userinfo (id) VALUES (1);
sqlite> INSERT INTO userinfo (id) VALUES (1);
Error: PRIMARY KEY must be unique
sqlite> INSERT OR REPLACE INTO userinfo (id) VALUES (1);
sqlite> 

なければINSERT、あればDELETE→INSERTという動きになるので、INSERTが多い場合は前述のやり方よりパフォーマンスアップが望めるかもしれません。