Parametr, którego szukasz, to search_path
- zawiera listę schematów, w których będzie wyszukiwane zapytanie. Możesz więc zrobić coś takiego:
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
Zauważ, że jeśli plan zapytania zostanie zapisany w ciele funkcji foo(), możesz otrzymać nieoczekiwane wyniki. Zalecam, abyś zawsze wyraźnie wyświetlał schematy dla tabel, do których istnieją odniesienia, w funkcjach plpgsql, jeśli używasz zduplikowanych tabel. Jeśli nie, upewnij się, że masz testy, aby sprawdzić zachowanie ze zmieniającą się ścieżką wyszukiwania.
Och - możesz jawnie ustawić search_path również dla treści funkcji - zobacz instrukcję CREATE FUNCTION, aby uzyskać szczegółowe informacje.