Proszę, nie rób tego – najpierw przyjrzyj się alternatywom, zaczynając od partycjonowanie i wykluczanie ograniczeń .
Jeśli musisz używać dynamicznych nazw tabel, zrób to na poziomie aplikacji podczas generowania zapytania.
Jeśli wszystko inne zawiedzie, możesz użyć procedury PL/PgSQL, takiej jak:
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;
Będzie to działać tylko wtedy, gdy masz tabelę podstawową, która ma taką samą strukturę jak tabele podrzędne. Praca z tym jest również bardzo bolesna, gdy zaczynasz dodawać kwalifikatory (gdzie ograniczenia klauzul itp.) i zapobiega wszelkiego rodzaju buforowaniu planu lub efektywnemu użyciu przygotowanych instrukcji.