ALTER TABLE:新列中不再允许不兼容的默认值

注意

此行为变更在 2023_08 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

ALTER TABLE 命令的行为如下:

变更前:

ALTER TABLE ADD COLUMN DEFAULT 命令允许添加默认值与列的数据类型不兼容的列。由此产生的默认值无法使用。例如,尽管默认值 1 与 TIMESTAMP_TZ 数据类型不兼容,但以下命令仍能成功执行:

ALTER TABLE t ADD COLUMN x TIMESTAMP_TZ DEFAULT 1;

变更后:

ALTER TABLE ADD COLUMN DEFAULT 命令不再允许添加默认值与列的数据类型不兼容的列。为列设置不兼容默认值的尝试会出错。例如:

SQL compilation error: Expression type does not match column data type, expecting DATE but got NUMBER(1,0) for column Y

以下特定组合会失败:

列的数据类型

DEFAULT 值的数据类型

VARCHAR

BOOLEAN

DATE

BOOLEAN

TIME

BOOLEAN

TIMESTAMP_LTZ

BOOLEAN

TIMESTAMP_NTZ

BOOLEAN

TIMESTAMP_TZ

BOOLEAN

FLOAT

BOOLEAN

NUMBER

BOOLEAN

BOOLEAN

VARCHAR

DATE

FLOAT

TIME

FLOAT

TIMESTAMP_LTZ

FLOAT

TIMESTAMP_NTZ

FLOAT

TIMESTAMP_TZ

FLOAT

DATE

NUMBER

TIME

NUMBER

TIMESTAMP_LTZ

NUMBER

TIMESTAMP_NTZ

NUMBER

TIMESTAMP_TZ

NUMBER

参考:1425

语言: 中文