(错误)SQL 代码 -530,错误外键 PAY$ID$U 的插入或更新值无效

Posted

技术标签:

【中文标题】(错误)SQL 代码 -530,错误外键 PAY$ID$U 的插入或更新值无效【英文标题】:(Error)SQL CODE -530, ERROR THE INSERT OR UPDATE VALUE OF FOREIGN KEY PAY$ID$U IS INVALID 【发布时间】:2021-04-28 02:47:02 【问题描述】:

错误来自付款表。它说 PAY_ID_U 的插入值不正确。问题是什么?下面的代码片段是两个表的插入值的一部分。

INSERT INTO PAYMENT                                            
  VALUES('0100','00100','DEBIT','33456A','2021-01-20',1856.54);
INSERT INTO PAYMENT                                            
  VALUES('0110','00110','CREDIT','11223E','2020-02-02',56.78); 
INSERT INTO PAYMENT                                            
  VALUES('0120','00120','NONE','55334Z','2020-12-22',88.99);   

INSERT INTO INVOICE                                                 
  VALUES('0100','00100','TARGET','2019-01-08',100.00,'OPEN');       
INSERT INTO INVOICE                                                 
  VALUES('0110','00110','MORTGAGE','2021-01-20',1856.96,'PAID');    
INSERT INTO INVOICE                                                 
  VALUES('0120','00120','VERSACE','2020-08-20',985.97,'UNPAID');    

【问题讨论】:

INVOICE 运行顺利,但付款因错误而停止在第一行 (DB2 抛出的错误代码)DSNT408I SQLCODE = -530,错误:外键 PAY$ID$U 的插入或更新值无效 DSNT418I SQLSTATE = 23503 SQLSTATE 返回代码 屏幕截图中是否有我们应该阅读的内容?将表格定义包含为文本 【参考方案1】:

Db2 在这里表现正确,它表示没有像“00100”这样的发票密钥(用于第一次插入付款)。原因是您的 invoice.inv_id 是 CHAR(5),但是当您插入发票时,您在发票键的值语句中仅指定四个字符,缺少前导零!

顺便说一句,最好始终明确地命名插入列名称。

所以改变你的插入语句如下,注意密钥长度是 5 个字符:

INSERT INTO INVOICE (inv_id, inv_id_u, inv_desc, inv_date, inv_amt, inv_status)
    VALUES('00100','00100','TARGET','2019-01-08',100.00,'OPEN');    


INSERT INTO INVOICE (inv_id, inv_id_u, inv_desc, inv_date, inv_amt, inv_status)
  VALUES('00110','00110','MORTGAGE','2021-01-20',1856.96,'PAID');    

INSERT INTO INVOICE (inv_id, inv_id_u, inv_desc, inv_date, inv_amt, inv_status)
  VALUES('00120','00120','VERSACE','2020-08-20',985.97,'UNPAID');    

【讨论】:

以上是关于(错误)SQL 代码 -530,错误外键 PAY$ID$U 的插入或更新值无效的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL中的refcursor的概念

SQL强化保险业务

apple pay代码实现

sql索引实例

PL/SQL 解析 clob 数据

spring_boot_pay支付宝,微信,银联支付详细代码案例