【问题标题】:How can I tell which columns use a sequence for default value in snowflake?如何判断哪些列使用序列作为雪花中的默认值?
【发布时间】:2020-02-15 12:01:23
【问题描述】:

我想列出我的雪花数据库中使用序列的列。

INFORMATION_SCHEMA 架构包含列和序列的视图,但我没有看到任何表/视图可以让我找出哪个列使用了哪个序列。

通过INFORMATION_SCHEMA表可行吗?

或者我可以使用另一组特定于雪花的元数据吗?

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    其实我错了……

    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';
    

    【讨论】:

      【解决方案2】:

      我认为 Snowflake 中没有现有的视图可以满足您的要求。那将是一个功能请求。

      可以使用循环/循环遍历您的数据库/表并记录您正在查找的输出的脚本来解决此问题。例如,SHOW COLUMNS IN TABLE 命令将显示“自动增量”列,该列将包含用于填充该列的序列。

      【讨论】:

        猜你喜欢
        • 2011-02-26
        • 2021-06-26
        • 2021-10-02
        • 1970-01-01
        • 1970-01-01
        • 2021-09-02
        • 2021-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多