sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur släpper man en tabell baserat på IF-villkor i postgres?

IF kan inte användas i SQL, detta är endast giltigt för PL/pgSQL.

Du måste göra detta med dynamisk SQL i ett anonymt PL/pgSQL-block. Något i stil med:

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 förmodligen utöka select uttalande som ska sammanfogas mot pg_namespace och inkludera schemanamnet i ditt where-villkor för att säkerställa att du inte råkar tappa en tabell från fel schema.



  1. Kompilerar PHP 5.1.6 med PDO MySQL

  2. Skapa en Java-applikation i Oracle JDeveloper, del 2

  3. viloläge uppdateras delvis när entitet analyseras med json

  4. Uppdatera Oracle-tabellkolumnen med radnummer