sql >> Databáze >  >> RDS >> PostgreSQL

Jak zrušit tabulku na základě podmínky IF v postgresu?

IF nelze použít v SQL, to platí pouze pro PL/pgSQL.

Musíte to udělat s dynamickým SQL v anonymním bloku PL/pgSQL. Něco jako:

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;
$$

Pravděpodobně byste měli rozšířit select příkaz ke spojení proti pg_namespace a zahrňte název schématu do podmínky where, abyste se ujistili, že omylem nevypustíte tabulku ze špatného schématu.



  1. purpurová stránka pro produkty vhodná pro tisk

  2. Jak vytvořit řadová čísla v PostgreSQL

  3. Použijte výsledek hromadného shromažďování ve výběrovém dotazu bez kurzoru

  4. Úvod do datových typů MySQL