(error)sql代码-530,error外键pay$id$u的insert或update值无效

lndjwyie  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(472)

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

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');
crcmnpdw

crcmnpdw1#

db2在这里的行为是正确的,它说没有像“00100”这样的invoice键(用于第一次插入到payment中)。原因是您的invoice.inv\u id是char(5),但是当您插入invoice时,您在values语句中只为invoice键指定了四个字符,缺少前导零!
顺便说一下,最好总是显式地命名insert列名。
因此,请按以下方式更改insert语句,注意密钥长度为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');

相关问题