IF
kann nicht in SQL verwendet werden, dies gilt nur für PL/pgSQL.
Sie müssen dies mit dynamischem SQL innerhalb eines anonymen PL/pgSQL-Blocks tun. Etwas wie:
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;
$$
Wahrscheinlich sollten Sie select
erweitern Anweisung zum Verbinden mit pg_namespace
und schließen Sie den Schemanamen in Ihre Where-Bedingung ein, um sicherzustellen, dass Sie nicht versehentlich eine Tabelle aus dem falschen Schema löschen.