2016-03-03 2 views
0

пользователь получает эту ошибку при попытке добавить новую запись в базу данных:DB2 -803 Ошибка при попытке вставить несуществующую запись в таблице

com.jcorporate.expresso.core.db.DBException: Unable to add record to database for record with key 'CSQ119/C/CSQ119.1/SBF1041406' in database 'default':Unable to execute statement: INSERT INTO CP_INDUSR (IND_LAST_UPDATE, IND_SUB_CAT_ID, IND_CAT_ID, IND_LAST_UPDATE_USER, IND_TYPE, IND_USER_TYPE, IND_USER_NAME, IND_USER_ID) VALUES ('20160302', 'CSQ119.1', 'CSQ119', 'SB1041001', 'C', 'U', 'Palwasha Ashraf', 'SBF1041406')(StatisticsDBObject, db/context 'default'):DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1;CARDPRO.CP_INDUSR, DRIVER=3.61.65 (INSERT INTO CP_INDUSR (IND_LAST_UPDATE, IND_SUB_CAT_ID, IND_CAT_ID, IND_LAST_UPDATE_USER, IND_TYPE, IND_USER_TYPE, IND_USER_NAME, IND_USER_ID) VALUES ('20160302', 'CSQ119.1', 'CSQ119', 'SB1041001', 'C', 'U', 'Palwasha Ashraf', 'SBF1041406')):DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1;CARDPRO.CP_INDUSR, DRIVER=3.61.65

Но когда я попросил пользователь выполнить эта команда:

db2 "select * from CP_INDUSR where IND_CAT_ID='CSQ119' AND IND_TYPE='C' AND IND_SUB_CAT_ID='CSQ119.1' AND IND_USER_ID='SBF1041406'"

результат возвращается 0.

так мне интересно, как это может произойти, как, видимо, запись не существует в таблице, но он ударил -803 ошибку при попытке выполнить вставка.

Цените свой опыт в этой проблеме и заблаговременно благодарите.

+0

Это единственное заявление (и вставка) в вашу транзакцию? Каков первичный ключ для этой таблицы? – MichaelTiefenbacher

+0

Перед выполнением этого действия в другой таблице есть другой оператор insert. PK для этой таблицы: IND_CAT_ID, IND_TYPE, IND_SUB_CAT_ID и IND_USER_ID. – Bally

ответ

0

Что может привести к SQL0803 при выполнении вставки:

  • вставки строки, которая уже существует => Вы искали только именно с этой строки попытаться выбрать только первичные ключевые поля

    db2 "select * from CP_INDUSR where IND_CAT_ID='CSQ119' AND IND_SUB_CAT_ID='CSQ119.1' AND IND_USER_ID='SBF1041406'" 
    
  • несколько строк вставлены с одинаковыми значениями pk в той же транзакции - => снова вы написали это не то, что вы сделали

  • Вставка строки где другое уникальное ограничение (помимо первичного ключа) нарушается => поэтому проверьте, существуют ли для этой таблицы другие уникальные индексы
+0

Спасибо за объяснения. Я проверил индексы на таблице, только четыре Pks - это индексы. – Bally

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