ALTER COLUMN DROP NOT NULL

最近更新时间:2026-05-20 14:11:22

我的收藏

描述

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 tci
TBLPROPERTIES ('initial-prop' = 'v1');

移除非空约束

ALTER TABLE tci_set_not_null ALTER COLUMN id DROP NOT NULL;

验证最终状态

DESCRIBE tci_set_not_null;
-- 确认 id 列不再包含 NOT NULL 约束