Показать сообщение отдельно
  #12  
Старый 24.09.2009, 13:01
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Проверка ограничений



Проверка ограничений

Проверка ограничений может быть отложена и произведена в конце транзакции.

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


Отложенные (DEFERRED) проверки ограничений выполняются только во время фиксации транзакции. Если во время фиксации обнаруживаются какие-либо нарушения ограничений, то выполняется откат всей транзакции. Такие проверки ограничений особенно удобны, когда одновременно вводятся главные и подчиненные строки внешнего ключа, например, в системе ввода заказов, в которой одновременно вводятся заказ и его позиции.


Ограничение, определенное как откладываемое (DEFERRABLE), может быть задано:

изначально с немедленной проверкой (INITIALLY IMMEDIATE) - т.е. по умолчанию функционирует как ограничение с немедленной проверкой, пока не будет явно указано иное;
изначально с отложенной проверкой (INITIALLY DEFERRED) - т.е. по умолчанию это ограничение проверяется только в конце транзакции.
__________________
Телеграм чат
Ответить с цитированием