用户在尝试向数据库添加新记录时收到此错误:
com.jcorporate.expresso.core.db.DBException:无法使用密钥“CSQ119 / C / CSQ119.1 / SBF1041406'”将记录添加到数据库以进行记录。在数据库'默认':无法执行语句: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& #39;,' SBF1041406')(StatisticsDBObject,db / context'默认'):DB2 SQL错误: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',&# 39; CSQ119',' SB1041001',' C',' U',' Palwasha Ashraf',' SBF1041406&# 39;)):DB2 SQL错误:SQLCODE = -803,SQLSTATE = 23505,SQLERRMC = 1; CARDPRO.CP_INDUSR,DRIVER = 3.61.65
但是当我要求用户执行此命令时:
db2"从CP_INDUSR中选择*,其中IND_CAT_ID =' CSQ119' AND IND_TYPE =' C' AND IND_SUB_CAT_ID =' CSQ119.1' AND IND_USER_ID =' SBF1041406'"
结果返回0。
所以我想知道怎么会发生这种情况,因为显然表中没有记录,但在尝试执行插入时遇到-803错误。
感谢您在这个问题上的专业知识,并提前感谢。
答案 0 :(得分: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值插入多行 - =>你写的这不是你做过的事情