Den parameter, du leder efter, er search_path
- der viser de skemaer, en forespørgsel vil kigge i. Så du kan gøre noget som:
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
Bemærk, at hvis en forespørgsels plan bliver gemt inde i foo(), så kan du få uventede resultater. Jeg vil anbefale, at du altid eksplicit angiver skemaer for refererede tabeller i plpgsql-funktioner, hvis du bruger duplikerede tabeller. Hvis ikke, så sørg for, at du har test på plads for at kontrollere adfærd med en ændrende søgesti.
Åh - du kan også udtrykkeligt indstille search_path for en funktions krop - se manualens CREATE FUNCTION reference for detaljer.