【问题标题】:Snowflake alter column to have default value雪花更改列以具有默认值
【发布时间】:2021-06-26 18:45:20
【问题描述】:

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

结构如下:

我想为 LAST_UPDATED 列设置默认值。

我正在运行这个查询:

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

我收到以下错误:

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

如何更改表格?

【问题讨论】:

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


    【解决方案1】:

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

    检查here中的默认值部分

    你需要重新创建你的表

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2023-02-23
        • 2021-09-02
        • 2021-08-12
        • 1970-01-01
        • 2021-09-01
        • 2021-06-23
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        相关资源
        最近更新 更多