sql >> Base de Datos >  >> RDS >> PostgreSQL

Nombre de tabla dinámica en postgreSQL 9.3

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.