De parameter die u zoekt is search_path
- dat een lijst geeft van de schema's waarin een zoekopdracht zal kijken. U kunt dus iets doen als:
CREATE TABLE schema1.tt ...
CREATE TABLE schema2.tt ...
CREATE FUNCTION schema1.foo() ...
CREATE FUNCTION schema2.foo() ...
SET search_path = schema1, something_else;
SELECT * FROM tt; -- schema1.tt
SELECT * FROM schema2.tt -- schema2.tt
SELECT foo(); -- calls schema1.foo
SELECT schema2.foo(); -- calls schema2.foo
Houd er rekening mee dat als het plan van een query wordt opgeslagen in de hoofdtekst van foo(), u onverwachte resultaten kunt krijgen. Ik zou aanraden dat je altijd expliciet schema's vermeldt voor tabellen waarnaar verwezen wordt in plpgsql-functies als je gedupliceerde tabellen gebruikt. Als dit niet het geval is, zorg er dan voor dat u tests uitvoert om het gedrag te controleren met een veranderend zoekpad.
Oh - je kunt ook expliciet search_path instellen voor de body van een functie - zie de handleiding CREATE FUNCTION referentie voor details.