我在創建應該非常簡單的表時遇到問題。SQL 代碼(雪花)是:
create or replace table bank_raw as
select
*,
created_at datetime default current_timestamp()
from bank_raw;
我的錯誤是:Syntax error: unexpected 'DEFAULT'. (line 12)。
我不知道如何重新創建此表并添加此默認時間戳列。順便說一句,我已經用created_at DateTime default current_timestamp().
有任何想法嗎?
uj5u.com熱心網友回復:
使用 CTAS 時可以定義列串列定義:
樣本資料:
CREATE TABLE bank_raw(id INT, col TEXT);
INSERT INTO bank_raw(id, col) VALUES (1, 'a'), (2,'b');
詢問:
CREATE OR REPLACE TABLE bank_raw(id INT,
col TEXT,
created_at datetime default current_timestamp())
AS
SELECT
id, col, CURRENT_TIMESTAMP()
FROM bank_raw;
輸出:
SELECT * FROM bank_raw;
DESCRIBE TABLE bank_raw;


uj5u.com熱心網友回復:
由于這是 DML 操作而不是 DDL 操作,因此默認關鍵字不適用。您可以簡單地洗掉它,而是投影列并命名它:
create or replace table bank_raw as
select
*,
current_timestamp() as created_at
from bank_raw;
編輯:要強制執行默認值,您不能更改表以添加具有默認值的列,序列除外。所以你需要做這樣的事情:
select get_ddl('table','BLANK_RAW');
-- Copy and paste the DDL. Rename the new table,
-- and add the default timestamp:
create or replace table A
(
-- Existing columns here then:
created_at timestamp default current_timestamp
);
然后,您可以從表 BLANK_RAW 上的選擇中進行插入。您需要指定一個列串列并省略 CREATED_AT 列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/517927.html
標籤:sql雪花云数据平台
下一篇:SQL中任何月份的第一個日期
