Как я могу сказать, какие столбцы используют последовательность для значения по умолчанию в снежинке? - PullRequest
0 голосов
/ 18 октября 2019

Я хотел бы составить список столбцов в моей базе данных Snowflake, в которых используется последовательность.

Схема INFORMATION_SCHEMA содержит представления для столбцов и последовательностей, но я не вижу таблиц / представлений, которые позволили бы мнечтобы выяснить, какая последовательность используется в каком столбце.

Возможно ли это через таблицу INFORMATION_SCHEMA?

Или есть другой набор метаданных, специфичных для Snowflake, которые я мог бы использовать вместо этого?

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Я не верю, что в Snowflake существует вид, который выполняет ваш запрос. Это был бы запрос на добавление функции.

Обойти это можно с помощью сценария, который циклически / циклически просматривает ваши базы данных / таблицы и регистрирует искомый вывод. Например, команда SHOW COLUMNS IN TABLE покажет столбец «автоинкремент», который будет содержать последовательность, использованную при заполнении столбца.

0 голосов
/ 21 октября 2019

На самом деле я ошибся ...

Столбец 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';

, кажется, работает.

Я получаю " ZZ_ERIC.JUNK.TOTO_SEQ.NEXTVAL " в COLUMN_DEFAULT

Так что я мог бы получить ответ на свой первоначальный вопрос примерно так:

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_DEFAULT LIKE '%.NEXTVAL';
...