sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan dropper man en tabel baseret på IF-tilstand i postgres?

IF kan ikke bruges i SQL, dette er kun gyldigt for PL/pgSQL.

Du skal gøre dette med dynamisk SQL inde i en anonym PL/pgSQL-blok. Noget som:

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

Du bør sandsynligvis udvide select sætning for at slutte sig til pg_namespace og inkludere skemanavnet i din where-tilstand for at sikre, at du ikke ved et uheld taber en tabel fra det forkerte skema.



  1. Hvordan finder man efter flere kriterier med Phalcon findFirst?

  2. Forøg ydeevnen med Bulk Collect i Oracle

  3. Kan ikke finde nulværdi fra JSON_EXTRACT

  4. Cygnus-NGSI gemmer ikke data i PostgreSQL