PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да изпусна таблица въз основа на условието IF в postgre?

IF не може да се използва в SQL, това е валидно само за PL/pgSQL.

Трябва да направите това с динамичен SQL вътре в анонимен PL/pgSQL блок. Нещо като:

do
$$
declare
  l_count integer;
begin
  select count(*)
     into l_count
  from pg_class c
    join pg_namespace nsp on c.relnamespace = nsp.oid
  where c.relname = 'mytable' 
    and c.relpersistence = 'u'
    and nsp.nspname = 'public';

  if l_count = 1 then 
    execute 'drop table mytable';
  end if;

end;
$$

Вероятно трябва да разширите select израз за присъединяване срещу pg_namespace и включете името на схемата във вашето условие where, за да сте сигурни, че не изпускате случайно таблица от грешната схема.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирам само клиентските инструменти за PostgreSQL на Windows?

  2. блокиране в postgre при проста заявка за актуализиране

  3. Как да създам индекс на полето JSON в Postgres?

  4. postgresql 9.1 - достъп до таблици чрез функции

  5. Как да инсталирам luasql на Linux Ubuntu 16?