ALTER TABLE:新列中不再允许不兼容的默认值¶
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