🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PostgreSQL

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

Q&A

1回答

769閲覧

ポスグレの連番項目の動的初期化の方法

mashirisu2

総合スコア2

PostgreSQL

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

0グッド

1クリップ

投稿2021/02/09 01:10

PostGresの連番項目への動的初期化の方法

あるテーブル tbl_a があり、その項目名が col_000~col_999 あるとします。
ストアドファンクション内である条件が成立するとき、特定の項目だけ初期化する方法はあるでしょうか?
(項目が大量にあるので、項目の数だけ分岐処理を設けて実装する手段もありますが、項目数が増える可能性があるので動的にできる方法を探しています)

DECLARE
a_col tbl_a%rowtype
i integer
BEGIN
LOOP
i=i+1
if (条件判定) then
a_col.col_i = XXXXX; ← 例えば ある条件のときに、col_003 の項目に XXXXX の値を初期化
END IF
END LOOP;
END;

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

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

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

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

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

m.ts10806

2021/02/09 01:14

そのファンクションのパラメータは決まってるのでしょうか 追加などは可能なのでしょうか
mashirisu2

2021/02/09 01:47

パラメータは tbl_a のrowtypeです。
m.ts10806

2021/02/09 01:49

決まってるのでしょうか 追加などは可能なのでしょうか
guest

回答1

0

あるテーブル tbl_a があり、その項目名が col_000~col_999 あるとします。

そういうデータ構造がすでに間違っています。
tbl_a単体で管理せず、ぶら下がるように別テーブルにして、
tbl_a.idとcol_iのiをキーにした別テーブルを作れば簡単になります。

CSVデータをそのままインポートしちゃったりすると、そういうデータ構造になりがちですが、
意味をもたせて利用しやすい構造に分割することも大事なことだと思います。

それでもチャレンジしたいという状況なのだとお察ししますので、
参考記事を示すにとどめておきます。
PL/pgSQLが組めるのであれば、できるはず。

【postgreSQL】動的SQLをpsqlだけで動かす - Qiita

投稿2021/02/09 01:23

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問