はじめに UPSERTが採用されたという事で使用方法を調べてみました。 UPSERTとは 「このデータをINSERTしたいけど、同じデータが存在していて制約で弾かれるかもしれない。そうなったらUPDATEしたいなあ。」 と言った場合に使える機能です。 ただし、UPSERT句が作られた訳ではなく「一般的にUPSERTと言われている機能を搭載したよ」と言う事みたいですね。 この後は実際に制約を設定したテーブルにUPSERTを試してみてどうなるかを見ていきます。 検証環境 Mac OSX 10.9.5 PostgreSQL 9.5.1 構文 INSERT INTO テーブル名 VALUES ('値1', '値2', ...) ON CONFLICT ON CONSTRAINT 制約名 DO UPDATE SET カラム1='値', カラム2='値', ...; INSERTとUPDATEでON
![PostgreSQL 9.5の新機能CONFLICT(UPSERT)を使ってみた。 | DevelopersIO](https://cdn-ak-scissors.b.st-hatena.com/image/square/d9d7a9e19a3c5979fc0b83efa7beeec666f705bb/height=288;version=1;width=512/https%3A%2F%2Fdevio2023-media.developers.io%2Fwp-content%2Fuploads%2F2015%2F07%2Fsql.png)