Wypros za PostgreSQL

4 отговора 168 прегледа
#1

Wypros za PostgreSQL

Kak moga da proweria dali opredelena tablica syshtestwuwa w izbrana baza danni sys sredstwata na SQL? W smisyl w MSSQL ima koamnda Exist. Wyprosa e tuk w PotrgeSQL dali ima neshto podobno?

Mesri Predwaritelno:)

[линк]
Отговор
в отговор на FrancescoTotti #2

Re: Wypros za PostgreSQL

ами зависи, коя версия ползваш

значи този вариант

select * from pg_tables where tablename = 'r_test';

мисля, че ще работи на почти всички версии

а този е от 7.4 насам

select * from information_schema.tables where table_name = 'r_test';

той отговаря на sql стандарта и евентуално има шанс да е преносим и за други спазващи стандарта бази

Отговор
в отговор на FrancescoTotti #3

Re: Wypros za PostgreSQL

SELECT *
FROM
pg_class
WHERE
relname = 'table_name_hare' AND NOT relname LIKE 'pg_%'

Отговор
в отговор на Zeos #4

Re: Wypros za PostgreSQL

10x:)

[линк]
Отговор
в отговор на Zeos #5

Re: невярно

SELECT *
FROM
pg_class
WHERE
relname = 'table_name_hare' AND NOT relname LIKE 'pg_%'

не е вярно!!! това ще върне и ако имаш индекс или вю или други работи, които се казват 'table_name_hare'
ако се ползва това трябва да се провери после дали това е таблица

select c.* from pg_class as c where relname = 'r_test' and relkind = 'r';

P.S. моите варианти не бях видял, че са нови и двата и са за версия 7.4 и по-нова
P.S. също така ако 'table_name_hare' не започва с 'pg_' второто условие AND NOT relname LIKE 'pg_%' не е нужно и даже леко странно идеата е за избягване на системни таблици, ама защо

Редактирано от phpGuru на

Отговор