ОШИБКА 1451 (23000): Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполнено - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть следующий код ...

drop table if exists Route;
drop table if exists Profit;
drop table if exists Airport;

create table Airport( 
Airport_code varchar(3), 
Airport_name varchar(30),  
Country varchar(30),
primary key(Airport_code)
); 

create table Profit(
Year int,
Profit_factor double,
primary key(Year)
);

create table Route(
Route_id int not null auto_increment,
Departure_airport_code varchar(3),
Arrival_airport_code varchar(3),
Year int, 
Route_price double default 0,  
primary key(Route_id),
foreign key(Arrival_airport_code) references Airport(Airport_code),
foreign key(Departure_airport_code) references Airport(Airport_code),
foreign key(Year) references Profit(Year)
);

Когда я выполняю этот код в первый раз, когда он успешно работает без ошибок, он дает мне предупреждение для каждого из операторов отбрасывания, хотя .. Запрос ОК, затронуто 0 строк, 1 предупреждение (0.03 se c)

Фактическая проблема возникает, когда я пытаюсь выполнить тот же код во второй раз, что теоретически не должно вызывать каких-либо ошибок. Но я получаю .. ОШИБКА 1451 (23000): Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполняется

Сначала я не удаляю родительскую таблицу, что вызывает эту ошибку. Я не хочу использовать set foreign_key_checks или каскадные операторы, а скорее выясню истинную причину здесь.

Спасибо

...