表に列を追加する
ALTER TABLE ステートメントに ADD COLUMN 文節を指定することによって、新しい列を表に追加することができます。
始める前に
定義したい列の属性を決定します。 指定できる属性、その他のルール、および新しいカラムを追加する際の制限に関する詳細は、「ALTER TABLE ステートメント」 の「カラムの追加」を参照してください。
列を追加すると、後続のポイント・イン・タイム・リカバリー要求に影響する可能性があることに注意してください。 制限の可能性、リカバリ状況への影響、その他の考慮事項については、「ポイント・イン・タイム・リカバリ」 を参照してください。
新しい列に値が割り当てられると、行が強制的に別のページ物理ページに移動されるため、パフォーマンスが低下する可能性があります。 この状態は、通常の拡張部分を収容する十分なフリー・スペースがある表スペースを確認することで回避できます。 この問題が既に発生している場合は、表スペースに対して REORG を実行して解決することができます。 詳細は、「テーブルスペースの空き領域の確保 」を参照してください。
このタスクについて
新しい列を追加すると、その列が表の右端の列になります。 Db2は、列の属性に基づいて既存の行の値を決定します。 デフォルトが特殊レジスターの場合、既存の行の値は、列の追加時の設定になります。 ただし、新しい列に値が明示的に割り当てられるか、表スペースが再編成されるまで、既存の物理データ・レコードは変更されない可能性があります。
表がシステム期間テンポラル表またはアーカイブ対応の場合、新しい列は関連付けられた履歴表またはアーカイブ表にも追加されます。
- ROWID 列
- ID 列
- 行変更タイム・スタンプ列
- 行開始列
- 行終了列
- トランザクション開始 ID 列
プロシージャー
新しい列を表に追加するには、以下の手順を実行します。
例
以下の例では、表 DSN8910.DEPT に列を追加します。この表には、部門のロケーション・コードが含まれています。 列名は LOCATION_CODE で、そのデータ・タイプは CHAR (4) です。
ALTER TABLE DSN8910.DEPT
ADD LOCATION_CODE CHAR (4);次の作業
表に以前に固定長レコードが含まれていた場合、新しい列を追加すると、Db2はそれらを可変長レコードとして扱い、アクセス時間は即時に影響を受ける可能性があります。 レコードを固定長に戻すには、以下のステップを実行します。
- インライン・コピーを使用して、表スペースに COPY オプションを指定した REORG ユーティリティーを実行する。
- DELETE オプションを指定して MODIFY ユーティリティーを実行し、前のステップで REORG の前に作成されたすべてのイメージ・コピーのレコードを削除します。