Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Изменяет значение параметра конфигурации базы данных во время выполнения.
SET [ SESSION | LOCAL ] <configuration_parameter> { TO | = } { <value> | '<value>' | DEFAULT }
SET [SESSION | LOCAL] TIME ZONE { <value> | '<value>' | LOCAL | DEFAULT }
Команда SET изменяет параметры конфигурации сервера. Любой параметр конфигурации, отнесённый к категории сеансовых параметров, может быть изменён на лету с помощью команды SET. (Некоторые из них требуют прав суперпользователя для изменения, а другие нельзя изменять после запуска сервера или сеанса.) Команда SET влияет только на значение, используемое в текущем сеансе.
Если команда SET или SET SESSION выполняется внутри транзакции, которая впоследствии откатывается, эффект команды SET исчезает при откате транзакции. После фиксации внешней транзакции эффект сохраняется до конца сеанса, если только не будет переопределён другой командой SET.
Эффект команды SET LOCAL действует только до конца текущей транзакции, независимо от того, была ли она зафиксирована. Особый случай — команда SET, за которой следует SET LOCAL в одной и той же транзакции: значение SET LOCAL будет действовать до конца транзакции, но после её завершения (если транзакция зафиксирована) вступит в силу значение SET.
Эффект команд SET или SET LOCAL также отменяется при откате к точке сохранения (savepoint), предшествующей выполнению команды.
Если команда SET LOCAL используется внутри функции, имеющей опцию SET для того же параметра конфигурации (см. CREATE FUNCTION), то эффект команды SET LOCAL исчезает при выходе из функции; в любом случае восстанавливается значение, действовавшее до вызова функции. Это позволяет использовать SET LOCAL для динамического или многократного изменения параметра внутри функции, сохраняя удобство использования опции SET для сохранения и восстановления значения вызывающего контекста. Обратите внимание, что обычная команда SET переопределяет опцию SET окружающей функции; её эффект сохраняется, если только не был отменён откатом транзакции.
См. раздел Параметры конфигурации сервера для получения информации о параметрах сервера.
SESSION
LOCAL
configuration_parameter
value
SCHEMA
SET SCHEMA '<value>' является псевдонимом для SET <search_path> TO <value>. При использовании этого синтаксиса можно указать только одну схему.NAMES
SET NAMES <value> является псевдонимом для SET client_encoding TO <value>.SEED
random()). Допустимые значения — вещественные числа в диапазоне от -1 до 1 включительно.Вы можете также установить начальное значение, вызвав функцию setseed():
SELECT setseed(value);
TIME ZONE
SET TIME ZONE <value> является псевдонимом для SET timezone TO <value>. Синтаксис SET TIME ZONE допускает специальные формы записи часового пояса. Ниже приведены примеры корректных значений:
'PST8PDT'
'Europe/Rome'
-7 (часовой пояс на 7 часов западнее UTC)
INTERVAL '-08:00' HOUR TO MINUTE (часовой пояс на 8 часов западнее UTC).
LOCAL
DEFAULT Устанавливает часовой пояс в соответствии с локальным временем (то есть значением параметра timezone по умолчанию на сервере). Более подробную информацию о часовых поясах в базе данных см. в разделе «Часовые пояса» документации PostgreSQL.
Установка пути поиска схем:
SET search_path TO my_schema, public;
Увеличение объёма памяти на сегментном хосте на один запрос до 200 МБ:
SET statement_mem TO '200MB';
Установка формата даты в традиционный стиль POSTGRES с порядком «день перед месяцем»:
SET datestyle TO postgres, dmy;
Установка часового пояса для Сан-Матео, Калифорния (тихоокеанское время):
SET TIME ZONE 'PST8PDT';
Установка часового пояса для Италии:
SET TIME ZONE 'Europe/Rome';
SET TIME ZONE расширяет синтаксис, определённый в стандарте SQL. Стандарт допускает только числовые смещения часовых поясов, тогда как база данных поддерживает более гибкие спецификации часовых поясов. Все остальные возможности команды SET являются расширениями Database.