2016-04-04 4 views
0

Я использую jdbc с отключенным автокоммутатором. И у меня есть таблица с уникальным индексом. Возможно ли, что исключение нарушения ограничений возникает при соединении # commit, а не в PreparetStatement # execute.При возникновении нарушения нарушения ограничений

В моем случае (Oracle) оно всегда встречается на 'execute'. Это зависит от базы данных?

+0

Странный вопрос. Что именно вам нужно знать? При выполнении при выполнении изменений на стороне БД происходит исключение. Правильно. В случае пакетного обновления это может произойти позже (когда все изменения будут отправлены в БД) – StanislavL

ответ

2

Обычно ограничения выполняются при выполнении команды, а не при фиксации.

Но SQL имеет функцию определения ограничений как DEFERRABLE: Затем проверка целостности может быть отложена до момента завершения транзакции.

В Oracle это поведение может быть достигнуто с помощью предложения DEFERRABLE в определении ограничения и команды SET CONSTRAINTS DEFERRED.

+0

Nitpick: если ограничение объявлено DEFERRABLE, то это просто то, что отложено, то есть *** возможно *** иметь они проверяются в момент фиксации, но все равно может быть так, что он будет проверен немедленно (если декларация не включает INITIALLY DEFERRED или некоторые такие). –

+0

@ErwinSmout вы правы, изменили формулировку, чтобы выразить свою способность – wero

Смежные вопросы