База данных - обработка нарушения уникального ограничения

У меня есть экран создания пользователя, который принимает различные данные пользователя, а также имя и номер мобильного телефона. У меня есть соответствующая таблица USER, в которой имя и номер мобильного телефона образуют составной уникальный ключ. Есть и другие ограничения целостности, определенные в этой таблице.

Когда пользовательские данные вводятся на экране «Создать пользователя», который нарушает это ограничение, пользователю необходимо показатьудобный' сообщение об ошибке.

Когда происходит такое нарушение, я получаю исключение из базы данных MySQL:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1-1' for key `uk_FIRST_NAME__MOBILE_idx`

Есть два варианта показа значимого сообщения (например: «ОШИБКА: имя пользователя для данного номера мобильного телефона уже существует, пожалуйста, измените одно из них ").

Вариант 1. В блоке catch этого исключения проанализируйте исключение MySQL 'сообщение и ищитеuk_FIRST_NAME__MOBILE_idx», Если есть, покажите удобное для пользователя сообщение, как указано выше.

Вариант 2: написать API уровня DAO, который будет принимать имя и номер мобильного телефона в качестве единственных двух параметров, запустить запрос к базе данных, чтобы узнать, существует ли существующая запись, соответствующая этой комбинации имени и мобильного телефона. Если true, показать сообщение об ошибке пользователю; в противном случае выполните запрос вставки, чтобы вставить пользователя записи в таблицу USER.

Мне не нравится вариант 1, так как он мне нуженразобрать» сообщение об исключении, которое не является чистым решением. Мне также не нравится Вариант 2, так как он требует от менядва запроса в базе данных, которая менее эффективна, чем вариант 1, который представляет собой решение с одним запросом.

Вопрос: Есть ли другие варианты, которые лучше, чем эти два? Если нет, какой из этих подходов является правильным?

Ответы на вопрос(2)

Ваш ответ на вопрос