【问题标题】:snowflake alter an existing table by adding a new timestamp column with default value雪花通过添加具有默认值的新时间戳列来更改现有表
【发布时间】:2023-02-23 12:31:08
【问题描述】:

在雪花中,我试图通过添加一个具有默认值的新时间戳列来更改现有表,如下所示。

但是他们都没有工作并且有人尝试过这个并且这在雪花中是否可能。

更改表 TEST.TEST 添加列 LOAD_TIME TIMESTAMP_NTZ 默认 CURRENT_TIMESTAMP();

更改表 TEST.TEST 添加列 LOAD_TIME TIMESTAMP_NTZ 默认 SYSDATE();

ALTER TABLE TEST.TEST 添加列 LOAD_TIME TIMESTAMP_NTZ(9) DEFAULT CAST(sysdate() AS TIMESTAMP_NTZ(9));

更改表 TEST.TEST 添加列 LOAD_TIME TIMESTAMP_NTZ DEFAULT to_timestamp_ntz(current_timestamp)

更改表测试。测试添加列 LOAD_TIME TIMESTAMP_NTZ DEFAULT to_timestamp_ntz('2023-02-20 10:00:00.00000');

更改表测试。测试添加列 LOAD_TIME TIMESTAMP_NTZ DEFAULT '1970-00-00 00:00:00.00000'::TIMESTAMP_NTZ;

ALTER TABLE TEST.TEST 添加列 LOAD_TIME TIMESTAMP_NTZ DEFAULT '1970-01-01 00:00:00.000';

【问题讨论】:

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


    【解决方案1】:

    您不能使用 alter 语句为列添加默认值。这在 Snowflake 中不受支持。您将需要使用默认值创建另一个表,然后使用现有表中的数据加载它。我认为雪花不支持它的原因是因为基于微分区的架构。试想一下,如果我允许这个 alter 语句,将需要创建多少个微分区。这将是相当昂贵的操作。

    【讨论】:

      【解决方案2】:

      目前,不支持使用 alter table 为列添加默认值。

      https://docs.snowflake.com/en/sql-reference/sql/alter-table-column

      相反,您可以使用默认值创建一个新表,然后从旧表插入,然后交换它们

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-26
        • 1970-01-01
        • 2021-08-12
        • 1970-01-01
        • 2021-06-23
        • 2016-12-19
        • 2017-08-31
        • 1970-01-01
        相关资源
        最近更新 更多