質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

1回答

1196閲覧

postgresでreturning使い方が良く分からなく曖昧なのでテスト環境はどこかにご存じな方はお教え頂ければ幸いです。

hirochin

総合スコア21

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

0クリップ

投稿2019/08/29 05:27

よくある問題の一つなのですが
UPDATEしてその値を返す方法でRETURNINGがあると最近気が付いたので
RETURNINGを利用したいと考えております。

下記のシェルを

shell

1 doc_list=`psql -d $3 -t -A << _SQL 2: 3 body_results AS ( 4 SELECT doc_id, 5 jsonb_set(src, '{"properties"}', 6 jsonb_set(src->'properties', '{"parent"}', to_jsonb(parent_new))) AS body 7 FROM t2 8 WHERE parent <> parent_new 9 ) 10 SELECT body_results.doc_id 11 FROM body_results,e_sys.doc_source_user 12 WHERE e_sys.doc_source_user.doc_id = body_results.doc_id; 13_SQL` 14#↑で更新予定のdoc_idを取得して続けて↓で更新 15 psql -d $3 -t -A << '_SQL' 16: 17 body_results AS ( 18 SELECT doc_id, 19 jsonb_set(src, '{"properties"}', 20 jsonb_set(src->'properties', '{"parent"}', to_jsonb(parent_new))) AS body 21 FROM t2 22 WHERE parent <> parent_new 23 ) 24 UPDATE e_sys.doc_source_user AS target 25 SET body = body_results.body 26 FROM body_results 27 WHERE target.doc_id = body_results.doc_id; 28_SQL 29#シェルスクリプト内で上記doc_listを取得して処理 30 docs=(`echo $doc_list`) 31

をRETURNING句を利用してまとめたいと思っております。

Googleさんで”Postgres RETURNING”などで調査すると

psql -d $3 -t -A << '_SQL' : body_results AS ( SELECT doc_id, jsonb_set(src, '{"properties"}', jsonb_set(src->'properties', '{"parent"}', to_jsonb(parent_new))) AS body FROM t2 WHERE parent <> parent_new ) UPDATE sys.doc_source_user AS target SET body = body_results.body FROM body_results WHERE target.doc_id = body_results.doc_id RETURNING doc_id; _SQL

みたいなので大丈夫な気がするのですが
今現在実行環境が無いのでテストしたいと思っております。
Postgresのテスト環境はどこかにございませんでしょうか?

お忙しいところ恐縮ですが上記何か情報をご存知な方はコメント頂けますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2019/08/29 05:53

create table と サンプルデータのinsertがあれば代行で確認する事も出来そうですが。
hirochin

2019/08/29 06:00

さすがに代行は守秘義務があるので出来ないのですが コメントありがとうございます。
sazi

2019/08/29 06:03

問題無い内容に書き換えれば良いだけだと思いますけどね。
guest

回答1

0

ベストアンサー

有名どころだと、sqlfiddle

投稿2019/08/29 05:55

sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2019/08/29 06:36

そこは文法的なチェックだけですね。 sqlfilderも更新系は出来なかったような気がします
sazi

2019/08/29 06:38

postgresのpcへのインストールなんてすぐ出来ますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問