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