SET
Изменяет значение параметра конфигурации Greengage DB.
Синтаксис
SET [SESSION | LOCAL] <configuration_parameter> { TO | = } {<value> | '<value>' | DEFAULT}
SET [SESSION | LOCAL] TIME ZONE {<timezone> | LOCAL | DEFAULT}
Описание
Команда SET изменяет параметры конфигурации сервера. Любой параметр конфигурации, классифицируемый как параметр сессии, может быть изменен "на лету" с помощью команды SET. SET влияет только на значение в рамках текущей сессии.
Если команда SET или SET SESSION выполняется внутри транзакции, которая затем отменяется, то действие команды SET прекращается при откате транзакции. Если же окружающая транзакция фиксируется, действие SET сохраняется до конца сессии, если только его не переопределит другая команда SET.
Действие команды SET LOCAL продолжается только до конца текущей транзакции, независимо от того, была она зафиксирована или нет. Особый случай — использование SET с последующей командой SET LOCAL в одной транзакции: значение SET LOCAL будет сохраняться до конца транзакции, но после этого (если транзакция фиксируется) восстановится значение, установленное командой SET.
Если команда SET LOCAL используется внутри функции, которая включает SET для того же параметра конфигурации (см. CREATE FUNCTION), то действие команды SET LOCAL прекращается при завершении работы функции; значение, действовавшее на момент вызова функции, в любом случае восстанавливается. Это позволяет использовать SET LOCAL для динамических или повторяющихся изменений параметра внутри функции, сохраняя при этом удобство использования параметра SET для сохранения и восстановления значения, полученного извне. Обратите внимание, что обычная команда SET переопределяет любой параметр SET окружающей функции; ее действие сохраняется, если не происходит откат транзакции.
При создании курсора с помощью команды DECLARE в транзакции, нельзя использовать команду SET в транзакции, пока курсор не закрыт с помощью команды CLOSE.
За информацией о параметрах сервера обратитесь к статье Настройка СУБД с помощью GUC.
Параметры
| Параметр | Описание |
|---|---|
SESSION |
Указывает, что команда действует в рамках текущей сессии. Это поведение по умолчанию |
LOCAL |
Указывает, что команда действует только в рамках текущей транзакции. После |
configuration_parameter |
Название параметра конфигурации Greengage DB. С помощью |
value |
Новое значение параметра. Значения могут быть указаны в виде строковых констант, идентификаторов, чисел или списков перечисленных через запятую элементов. |
TIME ZONE |
Дополнительную информацию о часовых поясах в Greengage DB можно получить в разделе Time Zones документации PostgreSQL |
Примеры
Установка пути поиска схем:
SET search_path TO my_schema, public;
Увеличение объема памяти сегмент-хоста, выделяемой на каждый запрос, до 200 МБ:
SET statement_mem TO '200MB';
Установка традиционного стиля даты PostgreSQL с форматом ввода "день перед месяцем":
SET datestyle TO postgres, dmy;
Установка часового пояса Сан-Матео, штат Калифорния (тихоокеанское время):
SET TIME ZONE 'PST8PDT';
Установка часового пояса Италии:
SET TIME ZONE 'Europe/Rome';
Совместимость
SET TIME ZONE расширяет синтаксис, определенный в стандарте SQL. Стандарт допускает только числовые смещения часовых поясов, в то время как Greengage DB допускает указывать часовые пояса более гибко. Все другие функции SET являются расширениями Greengage DB.