【发布时间】:2021-01-01 15:56:16
【问题描述】:
我在 Snowflake 中有一个表“MY_TABLE”,我想在其中添加一个标识列。我试过了
ALTER TABLE "MY_TABLE"
ADD COLUMN primary_key int IDENTITY(1,1);
但这会返回
SQL compilation error: Cannot add column 'PRIMARY_KEY' with non-constant default to non-empty table 'MY_TABLE'.
这在雪花中是不可能的吗?
为了解决这个限制,我尝试创建表的临时版本
CREATE OR REPLACE TABLE "MY_TABLE_TEMP" LIKE "MY_TABLE"
ALTER TABLE "MY_TABLE_TEMP" ADD COLUMN primary_key int IDENTITY(1,1)
INSERT INTO "MY_TABLE_TEMP"
SELECT * FROM "MY_TABLE";
但现在我得到了错误
SQL compilation error: Insert value list does not match column list expecting <x+1> but got <x>
这是有道理的,因为我没有传递主键。在这一点上,似乎我可能不得不手动将 x (这是一个非常高的数字)的列名列表输入到 sql 查询中,所以我想知道我是否只是做错了。有没有其他人遇到过类似的问题?
【问题讨论】:
-
Snowflake 似乎不喜欢将新的自动增量列添加到现有表中。鉴于您的表似乎是空的,您可以修改您的 create 语句。
标签: sql primary-key snowflake-cloud-data-platform