Тип: | string |
По умолчанию: | "$user", public |
Контекст: | user |
Перезапуск: | false |
Эта переменная определяет порядок, в котором будут просматриваться схемы при поиске объекта (таблицы, типа данных, функции и т. д.), к которому обращаются просто по имени, без указания схемы. Если объекты с одинаковым именем находятся в нескольких схемах, использоваться будет тот, что встретится первым при просмотре пути поиска. К объекту, который не относится к схемам, перечисленным в пути поиска, можно обратиться только по полному имени (с точкой), с указанием содержащей его схемы.
Значением search_path
должен быть список имён схем через запятую. Если для имени, указанного в этом списке, не находится существующая схема, либо пользователь не имеет права USAGE
для схемы с этим именем, такое имя просто игнорируется.
Если список содержит специальный элемент $user
, вместо него подставляется схема с именем, возвращаемым функцией SESSION_USER, если такая схема существует и пользователь имеет право USAGE
для неё. (В противном случае элемент $user
игнорируется.)
Схема системных каталогов, pg_catalog
, просматривается всегда, независимо от того, указана она в пути или нет. Если она указана в пути, она просматривается в заданном порядке. Если же pg_catalog
отсутствует в пути, эта схема будет просматриваться перед остальными элементами пути.
Аналогично всегда просматривается схема временных таблиц текущего сеанса, pg_temp_nnn
, если она существует. Её можно включить в путь поиска, указав её псевдоним pg_temp
pg_temp. Если она отсутствует в пути, она будет просматриваться первой (даже перед pg_catalog
). Временная схема просматривается только при поиске отношений (таблиц, представлений, последовательностей и т. д.) и типов данных, но никогда при поиске функций и операторов.
Когда объекты создаются без указания определённой целевой схемы, они помещаются в первую пригодную схему, указанную в search_path
. Если путь поиска схем пуст, выдаётся ошибка.
По умолчанию этот параметр имеет значение "$user", public
. При таком значении поддерживается совместное использование базы данных (когда пользователи не имеют личных схем, все используют схему public
), использование личных схем, а также комбинация обоих вариантов. Другие подходы можно реализовать, изменяя значение пути по умолчанию, либо глобально, либо индивидуально для каждого пользователя.
Более подробно обработка схем описана в 6. В частности, стандартная конфигурация схем подходит только для баз данных с одним пользователем или с взаимно доверяющими пользователями.
Текущее действующее значение пути поиска можно получить, воспользовавшись SQL-функцией current_schemas (см. 4). Это значение может отличаться от значения search_path
, так как current_schemas показывает, как были преобразованы элементы, фигурирующие в search_path
.