Vänligen gör inte det här - titta noga på alternativ först, börja med partitionering och uteslutning av begränsningar .
Om du måste använda dynamiska tabellnamn, gör det på programnivå under frågegenerering.
Om allt annat misslyckas kan du använda en PL/PgSQL-procedur som:
CREATE OR REPLACE pleasedont(int year) RETURNS TABLE basetable AS $$
BEGIN
RETURN QUERY EXECUTE format('SELECT col1, col2, col3 FROM %I', 'basetable_'||year);
END;
$$ LANGUAGE plpgsql;
Detta fungerar bara om du har en bastabell som har samma struktur som undertabellerna. Det är också riktigt smärtsamt att arbeta med när du börjar lägga till kvalificerare (där klausulbegränsningar, etc), och det förhindrar någon form av plancachelagring eller effektiv användning av förberedda uttalanden.