使用序列创建雪花视图
Creating a Snowflake View with a Sequence
是否可以在视图中使用序列?我正在使用以下查询:
CREATE VIEW < VIEW_NAME > (ID, VALUE1, VALUE2,...) AS
SELECT
SEQ1.NEXTVAL,
VAL1,
VAL2,
...
FROM
< TABLE >
但它给我以下错误:
invalid identifier 'SEQ1.NEXTVAL'
查询在不创建视图时有效:
此处未定义 SEQ1,这就是您看到错误的原因。序列的文档在这里:
https://docs.snowflake.com/en/sql-reference/sql/create-sequence.html
序列是否存在?看起来你不小心错过了创建它。
使用 SEQ 对象的完整限定名,因为如果我在不同的 DB/Schema 中,那是用于查找 SEQ
的范围
基本上视图中的所有内容都应该是完全限定的,表、视图、函数、序列。
CREATE DATABASE test;
create SCHEMA test.test;
use SCHEMA test.test;
create SEQUENCE seq1;
create view test_v as SELECT seq1.nextval;
select * from test.test.test_v;
给出:
NEXTVAL
2
create SCHEMA test.not_test;
use SCHEMA test.not_test;
select * from test.test.test_v;
现在你得到:
SQL compilation error: error line 1 at position 29 invalid identifier 'SEQ1.NEXTVAL'
是否可以在视图中使用序列?我正在使用以下查询:
CREATE VIEW < VIEW_NAME > (ID, VALUE1, VALUE2,...) AS
SELECT
SEQ1.NEXTVAL,
VAL1,
VAL2,
...
FROM
< TABLE >
但它给我以下错误:
invalid identifier 'SEQ1.NEXTVAL'
查询在不创建视图时有效:
此处未定义 SEQ1,这就是您看到错误的原因。序列的文档在这里:
https://docs.snowflake.com/en/sql-reference/sql/create-sequence.html
序列是否存在?看起来你不小心错过了创建它。
使用 SEQ 对象的完整限定名,因为如果我在不同的 DB/Schema 中,那是用于查找 SEQ
基本上视图中的所有内容都应该是完全限定的,表、视图、函数、序列。
CREATE DATABASE test;
create SCHEMA test.test;
use SCHEMA test.test;
create SEQUENCE seq1;
create view test_v as SELECT seq1.nextval;
select * from test.test.test_v;
给出:
NEXTVAL |
---|
2 |
create SCHEMA test.not_test;
use SCHEMA test.not_test;
select * from test.test.test_v;
现在你得到:
SQL compilation error: error line 1 at position 29 invalid identifier 'SEQ1.NEXTVAL'