2015-02-25 7 views
1

Я хочу проверить, существует ли таблица в базе данных.PostgreSQL 9.3: ЕСЛИ НЕ СУЩЕСТВУЕТ

IF NOT EXISTS (SELECT * from INFORMATION_SCHEMA.Tables WHERE Table_name = 'test') THEN 

    RAISE INFO 'Not exists'; 

else 

    RAISE INFO 'Exists'; 

end if; 

Получение ошибки:

ERROR: syntax error at or near "IF" 

ответ

2
DO 
$do$ 
BEGIN 
IF NOT EXISTS (SELECT * from INFORMATION_SCHEMA.Tables WHERE Table_name = 'test') THEN 

    RAISE INFO 'Not exists'; 

else 

    RAISE INFO 'Exists'; 

end if; 
end; 
$do$ 

Вы должны окружать свои заявления PostGreSQL с блоком

0

IF NOT EXISTS не действует в этом контексте в (то, что выглядит как) plpgsql.

Его можно использовать в таких контекстах, как CREATE TABLE IF NOT EXISTS foo.

В plpgsql контексте, следует использовать в сочетании с GET DIAGNOSTICSROW_COUNT.

Док дает следующий фрагмент кода для этого:

GET DIAGNOSTICS integer_var = ROW_COUNT; 

Если integer_var (который вам необходимо будет предварительно декларируется) является 0, вы знаете, что таблица не существует.

Для получения более подробной информации см. Postgres doc.

Смежные вопросы