Проверка ограничений
Проверка ограничений может быть отложена и произведена в конце транзакции.
Неотложенные проверки ограничений, которые также называют немедленными (IMMEDIATE), производятся в конце каждого оператора DML. Нарушение ограничения вызывает откат соответствующего оператора. Если ограничение приводит к такому действию, как, например, каскадное удаление (delete cascade), то это действие выполняется как часть вызвавшего его оператора.
Если при определении ограничения не была задана возможность отложенной проверки (deferrable), тогда его нельзя изменить так, чтобы эта возможность стала доступной.
Отложенные (DEFERRED) проверки ограничений выполняются только во время фиксации транзакции. Если во время фиксации обнаруживаются какие-либо нарушения ограничений, то выполняется откат всей транзакции. Такие проверки ограничений особенно удобны, когда одновременно вводятся главные и подчиненные строки внешнего ключа, например, в системе ввода заказов, в которой одновременно вводятся заказ и его позиции.
Ограничение, определенное как откладываемое (DEFERRABLE), может быть задано:
изначально с немедленной проверкой (INITIALLY IMMEDIATE) - т.е. по умолчанию функционирует как ограничение с немедленной проверкой, пока не будет явно указано иное;
изначально с отложенной проверкой (INITIALLY DEFERRED) - т.е. по умолчанию это ограничение проверяется только в конце транзакции.