см. дополнительную функцию table_exists_v2 ().

проверить, существует ли столбец, я могу легко использовать что-то похожее на это:

SELECT attname FROM pg_attribute 
WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'YOURTABLENAME') 
AND attname = 'YOURCOLUMNNAME';

Тем не менее, я сталкиваюсь с проблемами с

SELECT oid FROM pg_class WHERE relname = 'YOURTABLENAME'

Когда есть несколько таблиц с одинаковым именем, распределенных по разным схемам, он возвращает OID всех таблиц с таким именем. Как проверить, содержит ли таблица в определенной схеме столбец, который мне нужен? Я использую Postgres 8.2.