sql >> Databasteknik >  >> RDS >> PostgreSQL

Dynamiskt tabellnamn i postgreSQL 9.3

Vänligen gör inte det här - titta noga på alternativ först, börja med partitionering och uteslutning av begränsningar .

Om du måste använda dynamiska tabellnamn, gör det på programnivå under frågegenerering.

Om allt annat misslyckas kan du använda en PL/PgSQL-procedur som:

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;

Detta fungerar bara om du har en bastabell som har samma struktur som undertabellerna. Det är också riktigt smärtsamt att arbeta med när du börjar lägga till kvalificerare (där klausulbegränsningar, etc), och det förhindrar någon form av plancachelagring eller effektiv användning av förberedda uttalanden.




  1. PostgreSQL age() funktion:olika/oväntade resultat när man landar i en annan månad

  2. Hur man beräknar genomsnittlig försäljning per vecka i MySQL

  3. Hur man hittar om ett kolumnnamn är ett reserverat nyckelord i olika databaser

  4. CTE för att få alla barn (ättlingar) till en förälder