sql >> Database teknologi >  >> RDS >> PostgreSQL

Dynamisk tabelnavn i postgreSQL 9.3

Gør venligst ikke dette - se grundigt på alternativer først, startende med opdeling og udelukkelse af begrænsninger .

Hvis du skal bruge dynamiske tabelnavne, skal du gøre det på applikationsniveau under generering af forespørgsler.

Hvis alt andet fejler, kan du bruge en PL/PgSQL-procedure 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;

Dette vil kun fungere, hvis du har en basistabel, der har samme struktur som undertabellerne. Det er også virkelig smertefuldt at arbejde med, når du begynder at tilføje kvalifikationer (hvor klausulbegrænsninger osv.), og det forhindrer enhver form for plancaching eller effektiv brug af forberedte sætninger.




  1. Skal jeg undgå COUNT alle sammen i InnoDB?

  2. Fordele og sikkerhed i Amazon Relational Database Service

  3. Fejl under adgang til EntityManager - openjpa - WAS liberty-profil

  4. send REFCURSOR type variabel til Oracle Stored procedure fra Java