自动增量跳过雪花中带有合并语句的序列

Auto increment skip the sequence with merge statemnt in snowflake

我正在处理一个需要实施代理键的用例。我有一个应该自动递增 1 的列 ID,但是当我使用合并时它会跳过 2 到 4 序列。

create or replace table auto_increment(id int primary key autoincrement start 1 increment 1,name varchar(50),city varchar(50));

create or replace table emp(name varchar(50),city varchar(50));

create or replace stream emp_stream on table emp;

insert into emp values('salman','mumbai'),('akshay','pune'),('aamir','mumbai');

merge into auto_increment as a
using emp_stream as e
on e.name=a.name
when matched then update
set a.name=e.name,
a.city=e.city
when not matched then insert (name,city) values(e.name,e.city);

select * from auto_increment;

ID
1
2
3

insert into emp values('aamir','chennai'),('akshay','mumbai'),('ranjikant','chennai'),('mahesh babu','hyderabad');

merge into auto_increment as a
using emp_stream as e
on e.name=a.name
when matched then update
set a.name=e.name,
a.city=e.city
when not matched then insert (name,city) values(e.name,e.city);

select * from auto_increment;

ID
1
2
3
6
7

为什么它跳过了 4,5?当我再次使用 merge 时,它​​在序列中给出了更多的间隙。

这里已经回答了:

MERGE command results in gaps in sequence numbers

根据 Snowflake 文档,Snowflake 不保证序列中没有间隙。

https://docs.snowflake.net/manuals/user-guide/querying-sequences.html.

我可以说 Snowflake 开发团队正在努力改进 MERGE 语句的序列。