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
Таблица.