Parametern du letar efter är search_path
- som listar de scheman som en fråga kommer att titta i. Så du kan göra något 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
Observera att om en frågas plan sparas inuti foo() så kan du få oväntade resultat. Jag skulle rekommendera att du alltid explicit listar scheman för refererade tabeller i plpgsql-funktioner om du använder duplicerade tabeller. Om inte, se till att du har tester på plats för att kontrollera beteendet med en växlande sökväg.
Åh - du kan uttryckligen ställa in sökväg för en funktions kropp också - se manualens CREATE FUNCTION-referens för detaljer.