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 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。

PostgreSQL の構文一覧(psql・JSONB・PL/pgSQL)へ戻る