描述
ALTER TABLE ... ALTER COLUMN ... DROP NOT NULL 将表中的非空列(NOT NULL)修改为可空列(NULLABLE)。适用于需要放松列约束、允许 NULL 值写入的场景。语法
ALTER TABLE table_name ALTER COLUMN column_name DROP NOT NULL;
注意事项
Iceberg 不支持
SET NOT NULL — 无法反向操作,原因是引擎无法确认现有数据中是否已存在 NULL 值。DROP NOT NULL 是元数据变更,不涉及数据重写,执行速度快。操作前请确认下游消费逻辑能正确处理
NULL 值。示例
创建基础表
DROP TABLE IF EXISTS tci_set_not_null;CREATE TABLE tci_set_not_null (id BIGINT NOT NULL,name STRING) USING tciTBLPROPERTIES ('initial-prop' = 'v1');
移除非空约束
ALTER TABLE tci_set_not_null ALTER COLUMN id DROP NOT NULL;
验证最终状态
DESCRIBE tci_set_not_null;-- 确认 id 列不再包含 NOT NULL 约束