COBOL-DB2 -803 эквивалент в Java
Кобол: [ВСТАВЬТЕ КОД]
EVALUATE SQLCODE
WHEN +000
...
WHEN -803
...
WHEN OTHER
...
END-EVALUATE.
Этот код оценивает SQLCODE, и повторяющаяся запись обрабатывается здесь -803. Ошибка -803: ВСТАВЛЕННОЕ ИЛИ ОБНОВЛЕННОЕ ЗНАЧЕНИЕ НЕДОПУСТИМО, ПОТОМУ ЧТО ИНДЕКС В ИНДЕКСНОМ ПРОСТРАНСТВЕ indexspace-name ОГРАНИЧИВАЕТ КОЛОННЫ ТАБЛИЦЫ, ЧТО НЕТ ДВЕ РЯДА МОГУТ СОДЕРЖАТЬ ДУБЛИКАТНЫЕ ЗНАЧЕНИЯ В ЭТИХ КОЛОННАХ. Избавиться от существующей строки - X record-id.
Другими словами, ошибка дублированного ключа.
В Java я обычно делаю то же самое, запуская запрос на выборку, и проверяю наличие записи в базе данных, и, если она не существует, я вставляю запись.
Есть ли другой способ справиться с ситуацией -803 в Java?
1 ответ
В Java вы хотите поймать SQLException
и проверьте код ошибки:
PreparedStatement stmt = ...;
try
{
stmt.executeUpdate();
}
catch (SQLException e) {
if (e.getErrorCode() == -803)
{
// handle duplicate entry
}
else
{
// handle other errors
}
}
Обратите внимание, этот код специфичен для DB2, так как -803 - код ошибки, специфичный для поставщика.