語法 (DB2 v10+)
ALTER TABLE <tabname> ALTER COLUMN <colname> SET DATA TYPE <datatype>;
注意事項
- 縮短欄位長度 (如 VARCHAR(100) → VARCHAR(50)) 會使表進入 REORG PENDING 狀態,需執行
REORG TABLE <tabname> 解除。
- 延長欄位長度 或變更型別 (相容轉換) 通常不會導致 REORG PENDING。
- 變更前請確認現有資料符合新型別限制,否則會報錯。
完整範例
-- 1. 變更型別
ALTER TABLE SALES.ORDER ALTER COLUMN COMMENT SET DATA TYPE VARCHAR(200);
-- 2. 若為縮短長度,檢查狀態
SELECT TABNAME, STATUS FROM SYSCAT.TABLES WHERE TABNAME='ORDER';
-- STATUS = 'R' 表示 REORG PENDING
-- 3. 執行重組 (可選 ONLINE/ALLOW WRITE ACCESS)
REORG TABLE SALES.ORDER ALLOW WRITE ACCESS;