いつもお世話になっております。
postgreSQLで同じ構造のテーブルに対して、同一キーが存在すればUpdate、
無ければinsert というよくある更新をSQLで実行しようとしています。
Ver9.5以降だとupsert命令が使えるそうですが、使用中の9.5では使えないそうなので、下記のように書いてみましたが、うまく動作しません。
INSER INTOの行でsyntaxエラーと出ます。
tempというテーブルからwrkというテーブルに更新を行うものです。
列はともにa,b,c,dでそのうち、a,bがプライマリーキーです。
sql
1WITH upsert AS 2(UPDATE wrk 3 SET c = temp.c, 4 d = temp.d 5 FROM temp 6 WHERE temp.a = wrk.a 7 AND temp.b = wrk.b 8 RETURNING (temp.a, temp.b)) 9INSERT INTO wrk 10 SELECT a, b, c, d 11 FROM temp 12 WHERE (a, b) NOT IN 13 (SELECT a, b FROM upsert);
何処が拙いのかアドバイスいただけたら幸いです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/11 05:26