Перехват определенных FK-исключений с помощью Jdbc - PullRequest
0 голосов
/ 17 апреля 2011

Я использую Jdbc. Когда ограничение внешнего ключа нарушается, генерируется исключение MySQLIntegrityConstraintViolationException.

Прямо сейчас я просто делаю некоторую предварительную проверку, прежде чем делать вставки, чтобы предотвратить это. Но я подумал ... будет ли эффективнее просто попытаться сразу вставить и затем поймать исключение? Что вы думаете об этом?

Чтобы это было возможно, мне нужно иметь возможность проверить , почему MySQLIntegrityConstraintViolationException было выброшено после его перехвата. Например, возможно, мне нужно знать , какое ограничение FK не выполнено. Можно ли это сделать?

1 Ответ

2 голосов
/ 17 апреля 2011

Но я подумал ... будет ли эффективнее просто попытаться выполнить вставку сразу, а затем перехватить исключение?

Если исключения случаются редко (обычно это так)это действительно более эффективный и гораздо более простой способ.

Если вероятность получения нарушения FK высока, то проверки перед вставкой (при условии, что они не попадают в базу данных) сохранят двустороннюю передачук БД и обратно, и, следовательно, будет более эффективным.

Re: выяснить причину сбоя.Исключения поставщика обычно содержат некоторую информацию о том, какое ограничение вызвало исключение.Вы должны взглянуть на поля и методы исключений поставщика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...