powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / if EXISTS () then...
9 сообщений из 9, страница 1 из 1
if EXISTS () then...
    #33687745
drunk2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В скрипте хочу узнать есть ли view с заданным именем, если есть - то drop
Код: plaintext
1.
2.
3.
if (EXISTS (select * from  pg_views where viewname=view_name)) then
 drop VIEW view_name; 
end if;
пишет
Код: plaintext
ERROR:  syntax error at or near "if" у символа  1 
можно ли узнать это другим способом или только
Код: plaintext
delete from pg_views where  viewname=view_name;
?
...
Рейтинг: 0 / 0
if EXISTS () then...
    #33687779
drunk2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насчет
Код: plaintext
delete from pg_views where  viewname=view_name;
погорячился -)
...
Рейтинг: 0 / 0
if EXISTS () then...
    #33687812
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй объявить переменную и делать в ней выборку примерно такого вида:
Код: plaintext
select count( 1 ) from pg_views where viewname=view_name
А затем анализировать значение этой переменной.
Если 0 - то представление не существует. Если 1 - то существует...

З.Ы.
Встречный вопрос - если представления на момент компиляции скрипта не будет существовать, то скомпилируется ли твой скрипт???
...
Рейтинг: 0 / 0
if EXISTS () then...
    #33687840
drunk2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
объявить переменную в скрипте нельзя. если можно - скажите как. придется писать функцию.-(
...
Рейтинг: 0 / 0
if EXISTS () then...
    #33687884
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может просто подойдет CREATE OR REPLACE VIEW ?
...
Рейтинг: 0 / 0
if EXISTS () then...
    #33687891
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drunk2объявить переменную в скрипте нельзя. если можно - скажите как. придется писать функцию.-(ТОгда расскажи, что ты вообще пытаешься сделать?
...
Рейтинг: 0 / 0
if EXISTS () then...
    #33687984
drunk2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wbearможет просто подойдет CREATE OR REPLACE VIEW ?нет, если кол-во стобцов разное.
Владимор Конев ТОгда расскажи, что ты вообще пытаешься сделать? скрипт , который делает апдейт базы(change.sql). структура обновляется/пишется почти каждый день.
...
Рейтинг: 0 / 0
if EXISTS () then...
    #33688018
SOmni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да дропай в любом случае ;-)
...
Рейтинг: 0 / 0
if EXISTS () then...
    #33690346
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А я для удаления несложную функцию написал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
create or replace function cond_drop(_type text, _name text) returns boolean
language plpgsql volatile strict
as $body$
/*
Удаление объекта БД без возбуждения ошибки в случае его отсутствия (pg8+)
Использование:
  select cond_drop(object_type, object_name);
  object_type ::= table | view | index | type | function
  Для функция нужно передать прототип полностью (с типами аргументов).
*/
begin
  if upper(_type) not in (
    'TABLE',
    'VIEW',
    'INDEX',
    'TYPE',
    'FUNCTION'
  ) then
    raise exception 'unknown type "%"', _type;
  end if;
  begin
    raise notice 'Trying drop % "%"...', _type, _name;
    execute 'DROP ' || _type || ' ' || _name;
    raise notice '% "%" dropped succesfully', _type, _name;
    return true;
  exception
    when undefined_table or undefined_function or undefined_object then
      raise notice '% "%" does not exists', _type, _name;
      return false;
  end;
end;
$body$;

--Проверка
create temporary table this_table_exists (a int);
select cond_drop('table', 'this_table_not_exists');
select cond_drop('table', 'this_table_exists');
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / if EXISTS () then...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]