Prosím, nedělejte to – nejprve se důkladně podívejte na alternativy, počínaje rozdělení a vyloučení omezení .
Pokud musíte používat dynamické názvy tabulek, udělejte to na úrovni aplikace během generování dotazu.
Pokud vše ostatní selže, můžete použít proceduru PL/PgSQL jako:
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;
To bude fungovat pouze v případě, že máte základní tabulku, která má stejnou strukturu jako podtabulky. Je také velmi bolestivé pracovat s tím, když začnete přidávat kvalifikátory (kde omezení klauzule atd.), a zabraňuje to jakémukoli ukládání plánu do mezipaměti nebo efektivnímu použití připravených příkazů.