默认值
语法
- DEFAULT default_expression:为新添加的列定义一个默认值。如果在INSERT、UPDATE或MERGE操作中未指定该列的值,将自动使用此默认值。对于添加列之前已存在的数据行,该列将填充为null。支持非确定性函数如(current_date\random\current_timestamp\上下文函数)和常量值
生成列和默认值区别
-
分区列支持:
- 默认值:当前不支持为分区列设置默认值。
- 生成列:支持为分区列生成值。
-
函数支持:
- 默认值:支持使用非确定性函数,如
current_timestamp()
- 生成列:不支持非确定性函数,只能使用确定性的标量函数。
- 默认值:支持使用非确定性函数,如
-
插入操作中的值指定:
- 默认值:在插入数据时,可以为列指定一个静态值,如果未指定,则使用默认值。
- 生成列:在插入数据时,不能为生成列指定值,其值完全由生成表达式决定。
-
列值来源:
- 默认值:不支持列的值来自其他列的转换。
- 生成列:支持列的值来自其他列的转换,即可以基于其他列的值计算生成。
-
现有数据行的处理:
- 默认值:当为现有表添加带有默认值的列时,已存在的数据行中的该列将填充为null。
- 生成列:对于已存在的数据行,生成列的值将根据生成表达式进行转换,并显示转换后的数据
使用限制
- 不支持分区列使用默认值。
- 支持批量接口写入,包括Studio数据集成的批量导入。实时接口写入时默认值不会生效,因为调用实时接口时必须指定所有的列。
- 不支持类似生成列中可以引用别的列的方式函数。
插入数据
添加字段时指定默认值
语法
- DEFAULT default_expression:为新添加的列定义一个默认值。如果在INSERT、UPDATE或MERGE操作中未指定该列的值,将自动使用此默认值。对于添加列之前已存在的数据行,该列将填充为null。
使用限制
- 不支持在已有的列添加默认值
示例
添加列并指定默认值
在这个例子中,new_col
将被添加到 existing_col
后面,并且所有现有的数据行的 new_col
将被设置为默认值 null。
联系我们