(错误)SQL 代码 -530,错误的外键 PAY$ID$U 的插入或更新值无效
(Error)SQL CODE -530, ERROR THE INSERT OR UPDATE VALUE OF FOREIGN KEY PAY$ID$U IS INVALID
错误来自付款 table。它说 PAY_ID_U 的插入值不正确。问题是什么?下面的代码片段是两个 table 的插入值的一部分。
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');
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');
错误来自付款 table。它说 PAY_ID_U 的插入值不正确。问题是什么?下面的代码片段是两个 table 的插入值的一部分。
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');
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');