2016-03-03 254 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

在執行此表之前,還有另一個插入語句插入到另一個表中。該表的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

相關問題