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