Liquibase add-foreign-key-constraint deferrable: что это значит?

глядя на документы для liquibase и add-foreign-key-constraint существует свойство, называемое deferrable. Но в документах не упоминается, что делает это свойство. Кто-нибудь знает?

1 ответов


отсрочить
НЕ ОТКЛАДЫВАЕТСЯ
Это определяет, можно ли отложить ограничение. Ограничение, которое не является отложенным, будет проверяться сразу после каждой команды. Проверка отложенных ограничений может быть отложена до конца транзакции (с помощью команды SET CONSTRAINTS). По умолчанию не DEFERRABLE. Только ограничения внешнего ключа в настоящее время принимают это предложение. Все другие типы ограничений не отсрочка.

[источник]http://www.postgresql.org/docs/8.1/static/sql-createtable.html

короче говоря, предположим, что две таблицы имеют циклическую зависимость FK. Когда мы выполняем insert для данных, ссылочных данных которых нет в обеих таблицах, а ограничение FK не откладывается, БД выдаст ошибку, поскольку существует нарушение ограничения FK. В случае отсрочки проверка будет выполнена в момент совершения транзакции.