IF
không thể được sử dụng trong SQL, điều này chỉ hợp lệ cho PL / pgSQL.
Bạn cần làm điều này với SQL động bên trong một khối PL / pgSQL ẩn danh. Một cái gì đó như:
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;
$$
Bạn có thể nên mở rộng select
tuyên bố tham gia chống lại pg_namespace
và bao gồm tên giản đồ trong điều kiện ở đâu của bạn để đảm bảo rằng bạn không vô tình làm rơi một bảng khỏi giản đồ sai.