sqlite3でレコードがなければ追加、あれば更新 UPSERT

sqlite3でレコードがなければ追加、あれば更新 UPSERT

http://web-academia.org/it_business_web_development/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/482/
を参考にする.

  • SQLはREPLACE文を使う.
  • 使用するためにPrimary keyの設定が必要.


(1)primary keyがtableを作成

create table test_table(id text primary key, a data)

(2)これに対して,replace文

replace into test_table(id,val) values(2,4);

入っているかみる

select * from test_table;

出力例
2|4

(3−2)更新

replace into test_table(id,val) values(2,5);

更新されているか確認

select * from test_table;

出力例
2|5

(3−1)追加(新しいidをいれる)

replace into test_table(id,val) values(4,5);

追加されているか確認

select * from test_table;

出力例
2|5
4|5