尝试在表

时间:2016-03-03 01:20:38

标签: database db2

用户在尝试向数据库添加新记录时收到此错误:

  

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错误。

感谢您在这个问题上的专业知识,并提前感谢。

1 个答案:

答案 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值插入多行 - =>你写的这不是你做过的事情

  • 插入另一个唯一约束(主键除外)被违反的行=>所以检查该表是否存在其他唯一索引