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.