манипулирует. Использовать предложения данного типа мы не рекомевду&м и предпочитаем альтернативные формы:
SET CONSTRAINTS ALL IMMEDIATE;
SET CONSTRAINTS ALL IMMEDIATE;
Но в этих формах скрыта небольшая ловушка для разработчиков, потому что некоторая часть проверки ограничений, необходимой в этой транзакции, может быть отмечена как неоткладываемая. SET CONSTRAINTS действует в течение транзакции, но ни этот, ни последующие предложения не выдают предупреждения в случае, если запрашиваемое действие невозможно выполнить из-за того, что одно из установленных ограничений (или все из них) не может быть отложено.
Предупреждение:
Мы рекомендуем пользоваться отложенной проверкой ограничений только в случае крайней необходимости. По возможности не делайте в приложении ссылок на имена ограничений вообще. Если вы считаете, что отложенная проверка ссылочной целостности может решить проблему проектирования, вспомните о том, что лишь очень немногие приложения хорошо справляются с ошибками периода фиксации транзакции (commit time error). В предыдущих версиях Oracle это случалось крайне редко.
Опция ENFORCE
Злоключениям и бедам, связанным с миграцией и приемом данных, посвящена целая глава в книге "Oracle: проектирование баз данных". Работая над проектами такого рода, мы заметили, что руководители стремятся переносить данные "со всеми потрохами", чтобы избежать трудоемкой работы по очистке данных. Тщательно построив базу данных, снабдив ее ограничениями и триггерами для защиты целостности наших данных, мы вдруг получаем указание удалить эти ограничения и триггеры, чтобы открыть дорогу "нечистым" унаследованным данным. При этом нас всегда уверяют, что данные будут восстановлены, когда появится время. Конечно же, времени никогда нет!
При наличии триггеров, которые вводят правила обработки и целостности данных, мы всегда можем "запереть дверь за сбежавшей лошадью" и включить их после загрузки данных. Это не позволяет исправить "зависшие" данные, но предотвратит распространение проблемы в новые данные. Что касается ограничений, то в Oracle? ситуация другая: здесь нельзя включить ограничение для таблицы, если в ней присутствуют данные, которые нарушают это ограничение. Другими словами, ограничения во многих случаях вообще не включались.
3. Некоторые усовершенствования в OraclcS	41