Получение РТОВ 00001 (нарушенное ограничение на уникальность данных) при ФИКСИРОВАНИИ?

Мы получаем РТЫ 00001 (нарушенное ограничение на уникальность данных) в пакетном задании. Однако ошибка происходит, когда ФИКСАЦИЯ выпущена, не в то время, когда незаконная запись вставляется.

Вопросы:

  • Каким образом это ограничение на уникальность данных проверяется в ФИКСАЦИИ? (Есть ли некоторые настройки, которые мы можем использовать так, чтобы проверка произошла во время ВСТАВКИ?)
  • Как мы можем узнать оскорбление SQL/запись, которые приводят к нарушению ограничения на уникальность данных?

Любая справка ценится!


Дополнительная информация / Вопрос:

"Незаконное" ограничение отмечено как НЕПОСРЕДСТВЕННОЕ и НЕДОПУСКАЮЩЕЕ ЗАДЕРЖКУ. Это может быть переопределено в транзакции?

7
задан OMG Ponies 25 April 2011 в 15:50
поделиться

2 ответа

Ограничения могут быть помечены/определены как отсроченные. В этом случае проверка ограничений может быть как "немедленной", так и "отложенной". При определении ограничения можно установить значение по умолчанию/инициальное, первоначально немедленное или первоначально отложенное . При установке значения отложенное ограничение применяется только после фиксации транзакции.
Поведение ограничений с отсрочкой можно изменить, например, через

set constraints all immediate;

, см. также: http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html

5
ответ дан 7 December 2019 в 05:22
поделиться

Задержки могут быть определены как отложенные, т.е. они проверяются при фиксации, а не при изменении данных. См. следующие 2 ссылки:

http://www.oracle-base.com/articles/8i/ConstraintCheckingUpdates.php

http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html

надеемся, что это поможет

.
3
ответ дан 7 December 2019 в 05:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: