sql >> Database >  >> RDS >> PostgreSQL

Dynamische tabelnaam in postgreSQL 9.3

Doe dit alsjeblieft niet - kijk eerst goed naar alternatieven, te beginnen met partitionering en beperkingsuitsluiting .

Als u dynamische tabelnamen moet gebruiken, doe dit dan op applicatieniveau tijdens het genereren van query's.

Als al het andere faalt, kun je een PL/PgSQL-procedure gebruiken zoals:

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;

Dit werkt alleen als je een basistabel hebt die dezelfde structuur heeft als de subtabellen. Het is ook erg pijnlijk om mee te werken als je begint met het toevoegen van kwalificaties (waar clausulebeperkingen, enz.), en het voorkomt elke vorm van caching van plannen of effectief gebruik van voorbereide instructies.




  1. Waarom niet de ingebouwde MySQL-gebruikers en -machtigingen voor een website gebruiken?

  2. Vraag naar een veel-op-veel-relatie met Doctrine met Symfony2

  3. alternatief voor listagg in Oracle?

  4. Een variabele hoeveelheid gegevens invoeren in een database met de best mogelijke normalisatie