Por favor, no hagas esto:busca alternativas primero, comenzando con partición y exclusión de restricciones .
Si debe utilizar nombres de tablas dinámicos, hágalo a nivel de aplicación durante la generación de consultas.
Si todo lo demás falla, puede usar un procedimiento PL/PgSQL como:
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;
Esto solo funcionará si tiene una tabla base que tiene la misma estructura que las subtablas. También es realmente doloroso trabajar con él cuando comienza a agregar calificadores (restricciones de cláusulas where, etc.), y evita cualquier tipo de almacenamiento en caché del plan o el uso efectivo de declaraciones preparadas.