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?
答案 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');