【发布时间】:2020-02-15 12:01:23
【问题描述】:
我想列出我的雪花数据库中使用序列的列。
INFORMATION_SCHEMA 架构包含列和序列的视图,但我没有看到任何表/视图可以让我找出哪个列使用了哪个序列。
通过INFORMATION_SCHEMA表可行吗?
或者我可以使用另一组特定于雪花的元数据吗?
【问题讨论】:
标签: snowflake-cloud-data-platform
我想列出我的雪花数据库中使用序列的列。
INFORMATION_SCHEMA 架构包含列和序列的视图,但我没有看到任何表/视图可以让我找出哪个列使用了哪个序列。
通过INFORMATION_SCHEMA表可行吗?
或者我可以使用另一组特定于雪花的元数据吗?
【问题讨论】:
标签: snowflake-cloud-data-platform
其实我错了……
INFORMATION_SCHEMA 列。COLUMNS.COLUMN_DEFAULT 包含对序列的文本引用。
这不是一个单独的表,但可以完成这项工作。
USE DATABASE ZZ_ERIC;
CREATE SCHEMA JUNK;
CREATE SEQUENCE JUNK.TOTO_SEQ;
CREATE TABLE JUNK.TOTO_TBL(TOTO_FIELD INTEGER NOT NULL DEFAULT JUNK.TOTO_SEQ.NEXTVAL, TOTO_NAME VARCHAR(100));
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'JUNK';
似乎有效。
我在 COLUMN_DEFAULT 中得到“ZZ_ERIC.JUNK.TOTO_SEQ.NEXTVAL”
所以我可以用这样的方式回答我最初的问题
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_DEFAULT LIKE '%.NEXTVAL';
【讨论】:
我认为 Snowflake 中没有现有的视图可以满足您的要求。那将是一个功能请求。
可以使用循环/循环遍历您的数据库/表并记录您正在查找的输出的脚本来解决此问题。例如,SHOW COLUMNS IN TABLE 命令将显示“自动增量”列,该列将包含用于填充该列的序列。
【讨论】: