2016-03-21 5 views
0

ich mit postgres am Experimentieren und kann nicht diese einfache Abfrage an die Arbeit:Drop-Tabelle, wenn es weniger als n Aufzeichnungen

drop table mytable if (select count(*) from mytable)<50 ; 

Dies gibt Fehler:

ERROR: syntax error at or near "if" 
LINE 1: drop table tablename if (select count(*) from mytable)<50 ; 

Wie ändern Sie/Drop-Tabellen in Postgres für eine bestimmte Bedingung?

+1

Postgres unterstützt keine 'WHERE' oder' IF' Klausel auf DROP TABLE': http://www.postgresql.org /docs/current/static/sql-droptable.html. –

+1

Warum willst du? Aber um deine Frage zu beantworten, setze den "Tropfen" NACH dem 'if'. Und fangen Sie an, die Dokumentation zu lesen, bevor Sie Fremde im Internet fragen. –

Antwort

0

Erstellen von dynamischen SQL arbeitet für diese (siehe answer) -

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 nsp.nspname = 'public'; 
    if l_count < 50 then 
    execute 'drop table mytable'; 
    end if; 
end; 
$$