sql >> Databáze >  >> RDS >> PostgreSQL

Dynamický název tabulky v postgreSQL 9.3

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ů.




  1. Oracle - Použití indexu s volitelnými parametry

  2. Udělejte si rozsah v postgresu

  3. MySQL:Proč 5. ID v klauzuli IN drasticky mění plán dotazů?

  4. Získejte správnou část řetězce v SQL Server (T-SQL)