テーブルがreorg-pendingになる可能性のあるコマンドの完全なリストはありますか?
しばらくグーグルで試しましたが、完全なリストが見つかりません。私の今の正確な問題-ADD FOREIGN KEYステートメントはテーブルをreorg-pendingにすることができますか?
列を追加または削除したり、列のデータ型やnullを許容するかどうかを変更するなど、物理構造を変更すると、テーブルはreorg pending
モードになります。
一部の操作ではテーブルがreorg pending
に配置されませんが、変更を有効にするには再編成が必要です(たとえば、テーブルCOMPRESS
属性やLOB列のインライン長の変更)。
外部キーを追加または削除しても、テーブルはreorg pending
に配置されず、再編成も必要ありません。ただし、既存の外部キーをnot enforced
からenforced
に変更すると、テーブルがcheck pending
モードになり、reorg pending
と同様に、アプリケーションがそのテーブルにアクセスできなくなります。
DB2のマニュアル、特にALTER TABLE
ステートメントとこの記事を除いて、reorg
についての詳細を読むための優れた情報源は1つも知りません。
はい、テーブルをREORGペンディング状態にする可能性のある列変更の完全なリスト(読み取り専用で、これらのコミットの1つだけなので、テーブルスキャンのみ可能であるため、かなり抜本的です)がALTER TABLE
コマンド、以下から抜粋。
以下は、バージョンを変更し、テーブルをREORGペンディング状態にするREORG推奨のALTERステートメントの完全なリストです。
- ドロップカラム
- ALTER COLUMN SET NOT NULL
- ALTER COLUMN DROP NOT NULL
- 次の状況を除き、ALTER COLUMN SET DATA TYPE:
- VARCHARまたはVARGRAPHIC列の長さの増加
- 列に索引が存在しない場合に、既存のデータから末尾ブランクを切り捨てることなく、VARCHARまたはVARGRAPHIC列の長さを短くする
これらのそれぞれが新しいバージョンを作成する可能性がありますが、3つのバージョンの後で再編成する必要がありますが、単一のUOWで必要なだけ列を変更できます。また、1つのALTER TABLE
コマンドを好きなように。これらの場合、すべての変更の合計が1つの新しいバージョンとしてカウントされます。