雪花更改列具有默认值

时间:2021-03-30 18:05:04

标签: snowflake-cloud-data-platform snowflake-schema

我有一张雪花桌。我想更改一列,使其具有默认值。

结构如下: enter image description here

我想为 LAST_UPDATED 列设置默认值。

我正在运行此查询:

alter table "TEST_STATUS" modify LAST_UPDATED set default CURRENT_TIMESTAMP() ;

我收到以下错误:

不支持的功能“更改列设置默认值”。

如何修改表格?

2 个答案:

答案 0 :(得分:0)

您不能使用 ALTER TABLE 更改列的默认值,除非它是一个序列或添加一个列默认值。

检查 here

中的默认值部分

您需要重新创建表格

答案 1 :(得分:0)

表上的默认值必须具有行为,

  1. null 时使用 42,可以实现为读操作
  2. 在插入 null 时使用更复杂的形式来设置值。像 seq() 或 current_date() 一样,这只能在写入时完成。

某些数据库上的后一种形式只是“重写”了当时和那里的数据,但鉴于雪花是免费的午餐/没有隐藏的成本。如果你想重写你的表(像第二种情况一样推送一个复杂的新值)你应该重写你的表。当你有一个 10 行的简单表格时,这看起来很荒谬,让你像这样跳过箍。但是,当您拥有 TB 级数据的表时,重写所有这些数据需要大量的计算时间,更重要的是绝对不是原子性的,因此需要在结构化数据迁移过程中有意地完成。

就像 Snowflake 的几乎所有内容一样,它旨在完成繁重的工作,因此大任务应该是计划任务。因此,大型重写可能会导致更大的仓库,并暂停入口数据进程。