#1452 — Не удается добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется Policy_payment

#sql #mysql-error-1452

Вопрос:

введите описание изображения здесь Я создал эти таблицы в 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;
 

Таблица платежей по полисам

 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, policy_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');
 

введите описание изображения здесь

это ошибка #1452 — Не удается добавить или обновить дочернюю строку: сбой ограничения внешнего ключа ( S11185754 . Policy_payment , ОГРАНИЧЕНИЕ Policy_payment_fk_payid ВНЕШНЕГО КЛЮЧА ( pay_id ) ССЫЛКИ Payment ( pay_id ))

Спасибо

Комментарии:

1. Вы пробовали использовать поисковую систему с фразой «#1452 — Не удается добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется», потому что это дает много-много ответов, которые будут соответствовать вашему точному вопросу.

Ответ №1:

Вы пытаетесь вставить запись с идентификатором pay_id, которая не соответствует ни одной записи в таблице платежей, т. е. именно тому, что указано в сообщении об ошибке.