0

当程序执行时,当它试图更新表中的数据时,我收到此错误。这是因为重复记录吗?避免重复记录出现sql错误的条件是什么。以下错误:

说明 = [IBM][CLI Driver][DB2/NT64] SQL0803N INSERT 语句、UPDATE 语句或由 DELETE 语句引起的外键更新中的一个或多个值无效,因为已识别主键、唯一约束或唯一索引通过“1”约束表“FH.Product”不具有索引键的重复值。SQLSTATE=23505 代码在这里:

 request = [
    UPDATE FH.product
    SET numchassis='%3',mtoc='%4'
    WHERE numchassis='%1' AND mtoc='%2'
]      
query=Constructed String(query,sChassis,sMTOC,sVin,sNewMTOC)
SQLChangeConnection(nCnx_DWH)
bRes = SQLExec(query,"REQUPD3")
IF NOT bRes THEN
    SQLInfoGene("REQUPD3")
    gsError=SQL. MyError+RC+Request
    sSQLState is a string = SQL. MyError
    sNativeErrorCode is a string = Spaceless(ExtractString(sSQLState,2,"Native Error Code ="))
    sSQLState = WithoutSpace(ExtractString(ExtractString(sSQLState,2,"SQL State ="),1,RC))
    //If update error because duplicate
    IF sNativeErrorCode = "-803" AND sSQLState = "23505" THEN
        Delete
        ECRIRE_TRACE("calling If condition ")
        deleteDepot(sChassis,sMTOC)
    OTHERWISE
        FIN_ERREUR()
    END
END

问题是在 IF 条件下,它没有调用 deleteDepot() 方法。

4

0 回答 0