Wypros za PostgreSQL
4 отговора
168 прегледа
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:)
[линк]
Mesri Predwaritelno:)
[линк]
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 стандарта и евентуално има шанс да е преносим и за други спазващи стандарта бази
значи този вариант
select * from pg_tables where tablename = 'r_test';
мисля, че ще работи на почти всички версии
а този е от 7.4 насам
select * from information_schema.tables where table_name = 'r_test';
той отговаря на sql стандарта и евентуално има шанс да е преносим и за други спазващи стандарта бази
Re: Wypros za PostgreSQL
SELECT *
FROM
pg_class
WHERE
relname = 'table_name_hare' AND NOT relname LIKE 'pg_%'
FROM
pg_class
WHERE
relname = 'table_name_hare' AND NOT relname LIKE 'pg_%'
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_%' не е нужно и даже леко странно идеата е за избягване на системни таблици, ама защо
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 на