Я читал об этом ключевом слове SQL DEFERRABLEв книге «Системы баз данных - Полная книга» .
Последнее [NOT DEFERRABLE] используется по умолчанию и означает, что каждый раз, когда выполняется оператор модификации базы данных, ограничение проверяется сразу же после этого, если модификация может нарушить ограничение внешнего ключа.
Однако, если мы объявляем ограничение как ОТЛОЖЕННОЕ , у нас есть возможность дождаться завершения транзакции перед проверкой ограничения.
Мы следуем за ключевым словом ОТЛОЖЕННЫЙ либо на НАЧАЛЬНО ОТЛОЖЕННЫЙ, либо на НАЧАЛЬНО НЕМЕДЛЕННО . В первом случае проверка будет отложена непосредственно перед фиксацией каждой транзакции. В последнем случае проверка будет производиться сразу после каждой выписки.
Чем NOT DEFERRABLEотличается от DEFERRABLE INITIALLY IMMEDIATE? В обоих случаях, похоже, любые ограничения проверяются после каждого отдельного утверждения.

DEFERRABLEзаявляет о намерении разработчика, что отсрочка ограничения является стоящим или необходимым действием. Это не относится к подавляющему большинству ограничений базы данных и маркировке всех, так какDEFERRABLEэто полезное различие потеряно.