Я прочитав це про ключове слово SQL DEFERRABLE
у системі баз даних - Повна книга .
Останнє [NOT DEFERRABLE] за замовчуванням, і означає, що кожного разу, коли виконується оператор модифікації бази даних, обмеження перевіряється відразу після цього, якщо модифікація може порушити обмеження зовнішнього ключа.
Однак, якщо ми оголосимо обмеження РОЗШИРЕНИМ , тоді ми маємо можливість почекати, поки транзакція не завершиться, перед тим, як перевірити обмеження.
Ми слідуємо за ключове слово відкладаються або INITIALLY DEFERRED або INITIALLY IMMEDIATE . У першому випадку перевірка буде відкладена безпосередньо перед кожною транзакцією. В останньому випадку перевірка проводитиметься відразу після кожної заяви.
Чим NOT DEFERRABLE
відрізняється від DEFERRABLE INITIALLY IMMEDIATE
? В обох випадках, схоже, будь-які обмеження перевіряються після кожного окремого твердження.
DEFERRABLE
заявляє про намір дизайнера про те, що відстрочка обмеження є корисною або необхідною дією. Це не стосується переважної більшості обмежень та маркування баз даних, оскільки цеDEFERRABLE
може втратити цю корисну відмінність.