#1452 - 无法添加或更新子行:外键约束失败 Policy_payment

问题描述

enter image description here我在 PHPmyadmin 中创建了这些表

付款表

DROP TABLE IF EXISTS Payment; 
CREATE TABLE IF NOT EXISTS Payment (
pay_id int(5) NOT NULL,number int(25) default NULL,amount decimal(20,2) default NULL,CONSTRAINT Payment_pk_payid 
PRIMARY KEY (pay_id) ) 
ENGINE=InnoDB DEFAULT CHARSET=utf8;

Policy_payment 表

DROP TABLE IF EXISTS Policy_payment;
CREATE TABLE IF NOT EXISTS Policy_payment( 
id int(5) NOT NULL,policy_id int(5) NOT NULL,pay_id int(5) NOT NULL,date date default NULL,CONSTRAINT Policy_payment_pk_id_policyid_payid 
    PRIMARY KEY (id,policy_id,pay_id),CONSTRAINT Policy_payment_fk_policyid 
    FOREIGN KEY (policy_id)
    REFERENCES Policy (policy_id),CONSTRAINT Policy_payment_fk_payid
    FOREIGN KEY (pay_id) 
    REFERENCES Payment (pay_id) ) 
ENGINE=InnoDB DEFAULT CHARSET=utf8;

所以当我尝试在 Policy_payment 表中插入值时,它给出了 #1452 错误。我做错了什么?

--表 Policy_payment 的转储数据

INSERT INTO Policy_payment (
id,pay_id,date) 
VALUES
('70111','88881','20001','2019-01-10'),('70112','88882','20002','2019-09-25'),('70113','88883','20003','2019-04-18'),('70114','88884','20004','2020-11-11'),('70115','88885','20005','2020-06-23'),('70116','88886','20006','2021-12-11'),('70117','88887','20007','2021-08-20'),('70118','88888','20008','2018-03-04'),('70119','88889','20009','2018-03-20'),('70110','88810','20010','2016-02-09');

enter image description here

这是错误 #1452 - 无法添加或更新子行:外键约束失败 (S11185754.Policy_payment,CONSTRAINT Policy_payment_fk_payid FOREIGN KEY (pay_id) REFERENCES Payment (pay_id))

谢谢

解决方法

您正在尝试插入一条记录,其 pay_id 与付款表中的任何记录都不匹配,即与错误消息所说的完全不匹配。