雪花中的标识列

时间:2021-04-01 15:55:27

标签: snowflake-cloud-data-platform

Snowflake 中的一个简单问题。我创建了一个带有标识列的表。

create table etl_test 
(id int identity,
name string);

并尝试向其中插入数据。在我的 SQL Server 世界中,我只需要提供 name 字段的值。

insert into etl_test values('test');

我在 Snowflake 中尝试了同样的方法,但出现错误

<块引用>

SQL 编译错误:插入值列表与期望 2 但得到 1 的列列表不匹配

如何确保插入的值 'test' 的 id = 1?

2 个答案:

答案 0 :(得分:0)

如果您没有插入到所有列中,则需要包含您正在使用的列名:

insert into etl_test (name) values('test');

答案 1 :(得分:0)

"Blind inserts" 是与 RDBMS 无关的反模式。

在您的场景中,您需要指定列列表并从列列表中删除 id 或为其提供 DEFAULT

INSERT INTO etl_test(id, name) VALUES (DEFAULT, 'test');