在 Greenplum(基于 PostgreSQL)中,可以使用 ALTER TABLE ... ALTER COLUMN ... TYPE 来修改表中字段的类型。
下面是详细说明和常见示例 👇
🧩 基本语法
✅ 示例 1:将字段类型从 INTEGER 改为 BIGINT
✅ 示例 2:将字段类型从 TEXT 改为 VARCHAR(100)
⚠️ 示例 3:类型不兼容时需要 USING 子句
当旧类型与新类型不能直接转换时,必须显式指定转换表达式:
USING子句指定了如何将旧值转换为新类型。
⚠️ 注意事项
- 
分布键/分区键字段不能直接修改类型 
 若字段是表的 分布键 或 分区键,必须:- 
先删除分布或分区定义; 
- 
修改字段类型; 
- 
再重新定义分布或分区。 
 
- 
- 
表有依赖(索引、视图、约束)时 
 若有依赖该字段的对象(如视图、外键),修改类型可能会失败,需要先移除或修改依赖对象。
- 
大表性能影响 
 修改字段类型可能触发全表重写(尤其是非兼容转换),在大表上可能耗时较长。
✅ 示例 4:带分布键的安全修改流程
假设 orders 表以 order_id 为分布键,现在想将其从 integer 改为 bigint: