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

相关问题