ON CONFLICT の使い方
あれば更新・なければ追加
書き方
INSERT … ON CONFLICT (列) DO NOTHING; INSERT … ON CONFLICT (列) DO UPDATE SET 列 = EXCLUDED.列;
一意制約にぶつかったときの動きを決めます。EXCLUDED は入れようとした値です(PostgreSQL)。
例
INSERT INTO stock (item_id, qty) VALUES (1, 5) ON CONFLICT (item_id) DO UPDATE SET qty = stock.qty + EXCLUDED.qty;
実際に打って練習する
PostgreSQL コースの Lv6「あれば更新 ON CONFLICT」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜2 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。