postgresql-9.5のインストールとUPSERT

年明け1/7にPostgreSQL 9.5がリリースされた。
仮運用してみたが特に問題なく使えている。
ここでは9.5の目玉の一つ、UPSERTについても検証する。

Contents

PostgreSQL 9.5インストール

パッケージでインストール

※Windows版は
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
からインストーラをダウンロードするのが良いだろう。

初期設定

postgresユーザのパスワード設定

リモート接続する場合の設定

別なマシンから接続する場合はpostgresql.confを設定する。

listen_addressesの#を外し、*に変更する。

md5で認証する場合の設定

OSで認証されたログインユーザで接続する場合はtrustのままで良いが、アプリケーションから接続するなどID/パスワードで接続する場合としてここでは全てmd5で設定する事にする。
また、LAN内(以下の例では192.168.1.1~192.168.1.254)の認証も受け付けるよう設定する。

再起動時の設定

UPSERTの実行

2回目のINSERTでは重複するのでUPDATEが、3回目のINSERTでは重複しないのでINSERTが実行されているのが確認できる。

なお、CONFLICTを検知するカラムにPRIMARY KEYまたはUNIQUE KEYが張ってないと
ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification
というエラーになる。

また、DO UPDATEではなく、DO NOTHINGも使える。UPSERTの代替を実現する以外にその様な状況になった事がないのでピンと来ないが、INSERTで重複した時も正常系として続行したい場合に使うのだろう。

コメントをどうぞ

入力されたメールアドレスは公開されません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください