Иллюстрированный самоучитель по PostgreSQL

SET CONSTRAINTS

Выбор режима проверки ограничений в текущей транзакции.

Синтаксис:

SET CONSTRAINTS { ALL режим […. ] }
{ DEFERRED | IMMEDIATE }

Параметры:

  • ALL. Ключевое слово ALL означает, что указанный режим должен относиться ко всем ограничениям в текущей транзакции.
  • режим. Имя ограничения, для которого устанавливается режим проверки.
  • DEFERRED. Проверка ограничений (или конкретного ограничения) откладывается до момента фиксации транзакции, то есть выполнения команды COMMIT.
  • IMMEDIATE. Ограничения (или конкретное ограничение) проверяются в конце каждой команды в транзакционном блоке.

Результаты:

  • SET CONSTRAINTS. Сообщение выдается при успешном изменении режима проверки ограничений.
  • ERROR: Constraint 'ограничение' does not exist. Ошибка – при попытке изменения режима проверки указано имя несуществующего ограничения.

Описание

Команда SET CONSTRAINTS задает режим проверки для всех ограничений или одного ограничения в текущем транзакционном блоке. Существует два режима проверки: немедленная (IMMEDIATE) и отложенная (DEFERRED) проверка ограничений. В режиме IMMEDIATE все ограничения проверяются после выполнения каждой команды транзакции, а в режиме DEFERRED ограничения проверяются лишь после выполнения команды COMMIT.

Примечание
В PostgreSQL версии 7.1.x (последней на момент написания книги) изменение режима проверки поддерживается только для ограничения FOREIGN KEY. Команда SET CONSTRAINTS не распространяется на ограничения CHECK и UNIQUE
.

Пример

Следующая команда выбирает режим немедленной проверки всех ограничений в текущей транзакции:

booktown=# SET CONSTRAINTS ALL IMMEDIATE;
SET CONSTRAINTS
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.