
問題
parent_id
とを含むテーブルがありchild_id
、これらは相互に排他的であるため、当然 2 つの値ではなく 1 つの値である必要があります。これらを に置き換える必要がありますexternal_id
。
したがって、すべての子 ID は外部 ID になり、すべての親 ID も外部 ID になります。
postgres で ID を新しい列に変換するにはどうすればよいでしょうか?
厄介な、潜在的な解決策
頭に浮かぶのは、これをいくつかの非常に面倒な手順で実行することだけですが、もっと良い方法があることを願っています。
新しい列を作成します
external_ids
。すべての子IDと親IDを、たとえnullであっても、UPDATE文字列の連続に出力します。
UPDATE table SET external_id = "<parent or child id>" WHERE row_id = <row_id>
各更新文字列を個別に実行すると、非常に長い時間がかかる可能性があるので、もっと良い方法があるはずだと考えています。
答え1
合体機能をチェックします。
UPDATE table SET external_id = coalesce( parent_id, child_id);