こんにちは!
今回は、SQLですでにレコードがあれば更新、なければ追加をする方法についてまとめます。
やりたいこと
例えば次のようなfruitsテーブルがあるとします。
fruit_id | fruit | comment |
---|---|---|
1 | apple | 赤い |
2 | orange | すっぱい |
このテーブルに「apple」「あまい」というデータを追加したいのですが、 もし「apple」が既に存在した場合は、コメントを上書きしたいとします。
普通にINSERT INTOすると新しくレコードが追加されて次のようになります。
fruit_id | fruit | comment |
---|---|---|
1 | apple | 赤い |
2 | orange | すっぱい |
3 | apple | あまい |
しかし、今回は次のような動作をしたいです。
fruit_id | fruit | comment |
---|---|---|
1 | apple | あまい |
2 | orange | すっぱい |
SQL
INSERT INTO fruits (fruit, comment) VALUES ('apple', 'あまい') ON CONFLICT(fruit) DO UPDATE SET fruit = 'あまい'
このようにON CONFLICTを使用することで実現できました。
おわりに
今回はSQLを組み合わせたプログラムを書くときにやりたかった動作についてまとめました。SQLはまだまだ知らない構文がたくさんあるのでこれからも勉強していきます!
14/100