表へ列を追加する際の、索引への列の追加
ALTER INDEX ステートメントを使用して列を既存の索引に追加すると、新しい列は索引キーの右端の列になります。
このタスクについて
制限事項: Db2 カタログの IBM® で定義されたインデックスに列を追加することはできません。
プロシージャー
既存の索引に列を追加するには、次のようにします。
- 列を表に追加する場合は ALTER INDEX ADD COLUMN SQL ステートメントを発行する。
- 変更プロシージャーをコミットする。
結果
テーブルに列が追加され、同じコミットスコープ内でインデックスが作成された場合、インデックスは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 を持つ新しい索引を即時に使用できます。