gpt4 book ai didi

sql - 如何使用自动增量列在 Snowflake 中创建 View

转载 作者:行者123 更新时间:2023-12-05 06:33:41 24 4
gpt4 key购买 nike

我需要在雪花中创建一个 View ,但我需要添加一个表中不存在的自动增量列

最佳答案

可以使用单独的 sequence 对象,例如:

create or replace table tab(i int) as select * from values('100'),('200'),('300');
create sequence seq;
create or replace view v as select i, seq.nextval as autoinc from tab;

但是,由于 View 的内容未物化。因此,如果您从该 View 中选择,autoinc 列每次都会有一个新值,例如

select * from v;
-----+---------+
I | NEXTVAL |
-----+---------+
100 | 1 |
200 | 2 |
300 | 3 |
-----+---------+

select * from v;
-----+---------+
I | NEXTVAL |
-----+---------+
100 | 4 |
200 | 5 |
300 | 6 |
-----+---------+

如果这对您有用,那没关系。您还可以在每次从 View 中选择之前重新创建序列:

select * from v;
-----+---------+
I | NEXTVAL |
-----+---------+
100 | 1 |
200 | 2 |
300 | 3 |
-----+---------+

create or replace sequence seq;
------------------------------------+
status |
------------------------------------+
Sequence SEQ successfully created. |
------------------------------------+

select * from v;
-----+---------+
I | NEXTVAL |
-----+---------+
100 | 1 |
200 | 2 |
300 | 3 |
-----+---------+

但是,不能保证同一条记录在每次 View 评估中都会获得相同的值。另请注意,序列不能保证产生密集的数字列表(可能存在漏洞)。

底线 - 最好有一个包含 autoincrement 列的表。

关于sql - 如何使用自动增量列在 Snowflake 中创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50629896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com