Вернуть все таблицы, в которых используется конкретное перечисление - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь вернуть все таблицы, в которых используется конкретное перечисление. Пока у меня есть это:

select *
    from pg_type t 
       join pg_enum e on t.oid = e.enumtypid  
       join pg_catalog.pg_namespace n
          ON n.oid = t.typnamespace and t.typname = 'enum';

Как я могу изменить этот запрос, чтобы он возвращал действительные таблицы, или есть что-то совсем другое, что лучше использовать?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018
select * from information_schema.columns
where table_schema not in ('information_schema','pg_catalog')
and data_type='enum'
0 голосов
/ 12 ноября 2018

Самый простой запрос был бы, учитывая, что тип, который вы ищете - typschema.typname:

SELECT t.relnamespace::regnamespace AS schema,
       t.relname AS tablename
FROM pg_catalog.pg_class AS t
   JOIN pg_catalog.pg_attribute AS c
      ON t.oid = c.attrelid
WHERE c.atttypid = 'typschema.typname'::regtype;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...