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

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

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

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

Q&A

解決済

1回答

112閲覧

DB2 テーブル名をリネームすると他のテーブルから張られている外部キーはどうなるのか

enoeno

総合スコア21

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

0グッド

0クリップ

投稿2025/04/24 02:25

実現したいこと

テーブルをリネームすると他のテーブルから張られている外部キーがどうなるのか知りたい

前提

TBL-AとTBL-Bがあり、TBL-BにTBL-Aを参照する外部キーFKBtoAがあるとします。

質問

TBL-AをTBL-A_OLDとリネームしてから新しくTBL-Aをcreateする場合、TBL-Bにある外部キーFKBtoAはどこを指すのでしょうか?
期待はcreateしたTBL-Aを指してくれることなのですが、もしかしてTBL-A_OLDを指してしまうのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

内部でOID管理されているので、最終的な名前で紐付けされるわけではありません。

TBL-AをTBL-A_OLDとリネームしてから新しくTBL-Aをcreateする場合、TBL-Bにある外部キーFKBtoAはどこを指すのでしょうか?

推察の通りTBL-A_OLDを指すことになります。ですので再度外部キー設定をする必要があります。

投稿2025/04/24 05:52

sazi

総合スコア25426

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

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

enoeno

2025/04/24 06:00

やはりそうなんですね。残念です。。。 テーブルにカラムを追加して中身のデータを移行しないといけない場合、DB2はALTERのadd columnに場所指定できるオプションがないのでこうせざる得ないんですよね。 2桁を超えるテーブルから外部キーを張られているテーブルが移行対象なので頭が痛いです。。。
enoeno

2025/04/24 07:07

その後テスト用テーブルでやってみた結果です。 renameは特にエラーは出ませんでした。renameするテーブルが他のテーブルへの外部キーを持っているとエラーになるのに参照されている場合はノーマルなのはびっくりしました。 ノーマル終了後、テーブルをA5:SQL Mk-2にて確認するとリネーム後はなんと他のテーブルからの参照外部キーがなくなっていました。自動で落ちるんですね。 ちなみに参照元のテーブルにあった外部キーですが、こちらもなくなっていました。 結論としては、他のテーブルが外部キーを張っているテーブルをリネームしたらその外部キーは落ちるので再度他のテーブルに外部キーを作成する必要があるとわかりました。
sazi

2025/04/24 07:47

回答に関しては文献を調べただけでしたので、申し訳ありません。 やはり、実際に試すのが確実ですね。 > テーブルにカラムを追加して中身のデータを移行しないといけない場合、DB2はALTERのadd columnに場所指定できるオプションがないのでこうせざる得ないんですよね。 途中のカラムとして追加したいという事ですか。Loadコマンドではカラムを指定できたはずですので、リネームしなくても可能な気がします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問