表へ列を追加する際の、索引への列の追加

ALTER INDEX ステートメントを使用して列を既存の索引に追加すると、新しい列は索引キーの右端の列になります。

このタスクについて

制限事項: Db2 カタログの IBM® で定義されたインデックスに列を追加することはできません。

プロシージャー

既存の索引に列を追加するには、次のようにします。

  1. 列を表に追加する場合は ALTER INDEX ADD COLUMN SQL ステートメントを発行する。
  2. 変更プロシージャーをコミットする。

結果

テーブルに列が追加され、同じコミットスコープ内でインデックスが作成された場合、インデックスはREORGを推奨する(AREO*)状態となり、すぐに使用できるようになります。 しかし、以下の状況が発生すると、インデックスはREBUILD-pending(RBDP)ステータスになります

  • 列がテーブルとインデックスに追加された場合にも、同じコミットスコープでテーブルに行が挿入されます。
  • column-name に ROWID 列が指定されている。

同じ作業単位内の索引および表に列を追加すると、表および索引のバージョン管理が行われます。

汎用プログラミングインターフェース情報の開始。たとえば、ACCTID、STATE、および POSTED を含む列を持つ表を作成したとします。

CREATE TABLE TRANS
   (ACCTID ..., 
    STATE ...,
    POSTED ...,
    ... , ...)
    ...;
STATE 列には既存の索引があります。
CREATE INDEX STATE_IX ON TRANS(STATE);
表および索引に ZIPCODE 列を追加するには、次のステートメントを発行します。
ALTER TABLE TRANS ADD COLUMN ZIPCODE CHAR(5);
ALTER INDEX STATE_IX ADD COLUMN (ZIPCODE);
COMMIT;

ALTER TABLE ステートメントと ALTER INDEX ステートメントは同じ作業単位内で実行されるため、Db2 はデータ・アクセスにキー STATE、ZIPCODE を持つ新しい索引を即時に使用できます。

汎用プログラミングインターフェース情報の終了。