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.