/
Вопросы и ответы
/
SQL
/

Как проверить существует ли таблица sql

Как проверить существует ли таблица sql

4 года назад

Человек-Молекула

Ответы

0

Я расскажу как это делается в PostgreSQL.

В репле psql для просмотра списка таблиц используется команда \d.

toto=> \d
         List of relations
 Schema |  Name       | Type  |  Owner
--------+-------------+-------+--------
 public | super_table | table |  toto

Если же репл нам не подходит, можно использовать запрос. В большинстве рекомендаций говорится о том, что стоит делать запрос к самой схеме information_schema.tables. Но такой подход, в данном контексте, неверен, так как выборка покажет только те таблицы, к которым у текущего пользователя есть доступ. Таким образом таблица может существовать, но запрос к information_schema.tables вернёт false.

Рекомендую, при проверке существования таблиц, обращаться напрямую к каталогам pg_class и pg_namespace. Запрос может выглядеть следующим образом:

SELECT EXISTS (
   SELECT FROM pg_catalog.pg_class c
   JOIN   pg_catalog.pg_namespace n ON n.oid = c.relnamespace
   WHERE  n.nspname = 'schema_name'
   AND    c.relname = 'table_name'
   AND    c.relkind = 'r'    -- only tables
   );

3 года назад

Roman Ashikov