PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Nome da tabela dinâmica no postgreSQL 9.3


Por favor, não faça isso - procure primeiro as alternativas, começando com particionamento e exclusão de restrição .

Se você precisar usar nomes de tabelas dinâmicas, faça-o no nível do aplicativo durante a geração da consulta.

Se tudo mais falhar, você pode usar um procedimento 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;

Isso só funcionará se você tiver uma tabela base que tenha a mesma estrutura das subtabelas. Também é muito doloroso trabalhar com ele quando você começa a adicionar qualificadores (restrições de cláusula where, etc.) e impede qualquer tipo de cache de plano ou uso de instrução preparada eficaz.