我在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'.
在Snowflake中是否无法做到这一点?
为了尝试规避这个限制,我尝试创建了表的临时版本。
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查询中,所以我想知道我是否做错了。还有其他人遇到过类似的问题吗?