Невозможно найти имена столбцов в ограничении FK - PullRequest
1 голос
/ 20 февраля 2020

Я создал две таблицы в Snowflake.

create or replace TRANSIENT TABLE TESTPARENT (
COL1 NUMBER(38,0) NOT NULL,
COL2 VARCHAR(16777216) NOT NULL,
COL3 VARCHAR(16777216) NOT NULL,
constraint UNIQ_COL3 unique (COL3)
);


create or replace TRANSIENT TABLE TESTCHILD3 (
COL_A NUMBER(38,0) NOT NULL,
COL_B NUMBER(38,0) NOT NULL,
ABCDEF VARCHAR(16777216) NOT NULL,
constraint FKEY_1 foreign key (COL_A, COL_B) references TEST_DB.PUBLIC.TESTPARENT1(COL1,COL2),
constraint FKEY_2 foreign key (ABCDEF) references TEST_DB.PUBLIC.TESTPARENT(COL3)
);

Теперь я хочу выполнить запрос и увидеть имена столбцов, которые участвуют в FKEY_2 FOREIGN KEY в таблице TESTCHILD3, но похоже, нет БД Table / View, которая хранит эту информацию. Я могу узнать имена столбцов для UNIQUE KEY & PRIMARY KEY, но для FOREIGN KEYS.

EDIT я уже пробовал INFORMATION_SCHEMA.TABLE_CONSTRAINTS вместе с INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS и всеми остальными. системные таблицы. Не повезло. Только DESC TABLE дает мне некоторую информацию, связанную с CONSTRAINTS и COLUMNS, но также отсутствует FOREIGN KEY CONSTRAINTS информация.

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Обновленный ответ:

Я проверял что-то не связанное и заметил очень эффективный способ перечисления всех первичных и внешних ключей:

show exported keys in account; -- Foreign keys
show primary keys in account;

Когда вы ограничиваете вызов таблицей, Похоже, вы должны запросить внешние ключи, которые указывают на родительскую таблицу:

show exported keys in table "DB_NAME"."SCHEMA_NAME"."PARENT_TABLE";

Вы можете проверить документацию о том, как ограничить команду show определенной c базой данных или схемой, но это возвращает очень быстро собирать информацию в таблице.

0 голосов
/ 20 февраля 2020

возможно, вы можете попытаться запросить это представление: INFORMATION_SCHEMA.TABLE_CONSTRAINTS

Примечание. TABLE_CONSTRAINTS отображает только объекты, для которых текущей роли для сеанса предоставлены права доступа.

Подробнее см. : https://docs.snowflake.net/manuals/sql-reference/info-schema/table_constraints.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...