MySQL Error Code 1452. Изменение таблицы для добавления внешнего ключа

Я удалил ограничения внешнего ключа для добавления данных, затем позже изменил таблицы, чтобы добавить внешние ключи обратно. Однако с изменением одной конкретной таблицы я продолжаю возвращать код ошибки 1452.

Данные

INSERT INTO Invoice
values
(323, 'Head Injury Patient', 'Surgery and Bed Stay', 150.00, 918),
(543, 'Eye Injury Patient', 'Medicine and hourly eye drops', 50.00, 910),
(859, 'Leg Injury Patient', 'Surgery and Bed Stay', 100.00, 915);

Добавление внешнего ключа

Alter table Invoice
Add Foreign Key(Medicine_ID) References Medicine(Medicine_ID);

Строительство счета

Create table Invoice (
Invoice_ID INT,
Invoice_description varchar(150),
Treatment varchar (150) NOT NULL,
Hospital_Cost INT NOT NULL,
Medicine_ID INT,
Primary Key(Invoice_ID)
);

Строительство Медицины

Create table Medicine (
Medicine_ID INT,
Medicine_name varchar(150),
Medicine_cost INT NOT NULL,
Medicine_description Varchar (150),
Brand_name varchar(150),
Manufacturer varchar(150),
Generic_name varchar(150),
price_per_unit INT,
Quantity_in_stock INT,
Primary Key(Medicine_ID)
);

1 ответ

Я считаю, что ошибка означает, что в Invoice стол, который имеет Medicine_ID значение, которое не существует в Medicine Таблица.

Чтобы выяснить, какие значения из Invoice не существует в Medicine Таблица, попробуйте этот запрос:

SELECT
    i.*
FROM
    Invoice i
    LEFT JOIN Medicine m
        ON i.Medicine_ID = m.Medicine_ID
WHERE
    m.Medicine_ID IS NULL

Вам нужно будет либо добавить соответствующие строки в Medicine таблицы или удалите эти строки из Invoice Таблица.

Другие вопросы по тегам