sql >> Database >  >> RDS >> PostgreSQL

Hoe een tabel te laten vallen op basis van IF-voorwaarde in postgres?

IF kan niet worden gebruikt in SQL, dit is alleen geldig voor PL/pgSQL.

U moet dit doen met dynamische SQL in een anoniem PL/pgSQL-blok. Iets als:

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

U moet waarschijnlijk de select . uitbreiden statement om mee te doen tegen pg_namespace en neem de schemanaam op in uw waar-voorwaarde om ervoor te zorgen dat u niet per ongeluk een tabel uit het verkeerde schema laat vallen.



  1. Inzicht in cloudgebaseerde prestatiebewaking van SQL Server

  2. Afbeeldingen opslaan in een database

  3. Registreert UNIX-tijd de tijdzone?

  4. Problemen bij het installeren van Oracle Database Express Edition 11g