Как проверить существует ли таблица sql
Ответы
Roman Ashikov
20 июля 2022
Я расскажу как это делается в 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
);
0
0