PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment supprimer une table basée sur la condition IF dans postgres?

IF ne peut pas être utilisé en SQL, ceci n'est valable que pour PL/pgSQL.

Vous devez le faire avec du SQL dynamique dans un bloc PL/pgSQL anonyme. Quelque chose comme :

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

Vous devriez probablement étendre le select déclaration à joindre à pg_namespace et incluez le nom du schéma dans votre condition where pour vous assurer que vous ne supprimez pas accidentellement une table du mauvais schéma.