Итак, у меня ошибка, когда я не могу создать таблицу, а затем добавить ограничение внешнего ключа в таблицу. ошибка, которую я получаю, выглядит следующим образом:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`fridge_contents_database`.`#sql-21e8_a`, CONSTRAINT `P_FI_id` FOREIGN KEY (`FI_id`) REFERENCES `food_item` (`FI_id`) ON DELETE CASCADE)
Я не уверен, что это значит, так как не должно быть предыдущего внешнего ключа, который должен это переопределять. Вот мой сценарий до этой неудачной операции.
DROP SCHEMA IF EXISTS fridge_contents_database;
CREATE SCHEMA fridge_contents_database;
USE fridge_contents_database;
drop table if exists Food_Item;
create table Food_Item(
FI_id int AUTO_INCREMENT,
FI_name varchar(50),
FI_exp_date date,
FG_id int,
CONSTRAINT FI_id_PK PRIMARY KEY(FI_id)
);
INSERT INTO Food_Item (FI_name, FI_exp_date, FG_id) VALUES
("Mayo", "2020-01-06", 3),
("Tofu","2020-01-15", 2),
("Courtland Apples", NULL, 2),
("Sandwich Pickles","2020-02-19", 2),
("Apple Sauce","2020-02-22", 2),
("Campbelle's Garden Vegetable Soup","2020-02-24", 2),
("Angel Food Cakes","2020-02-24", 5);
drop table if exists Pricing;
create table Pricing(
FI_id int AUTO_INCREMENT,
P_priced_by varchar(10),
P_price decimal(6,2),
constraint FI_id_PK primary key(FI_id)
);
insert into Pricing (FI_id, P_priced_by, P_price) values
( 1, "unit", 6.99 ),
( 2, "unit", 5.99 ),
( 3, "lb", 2.99 ),
( 4, "unit", 2.99 ),
( 5, "unit", 4.99 ),
( 6, "unit", 3.99 ),
( 7, "unit", 3.99 ),
( 8, "unit", 3.99 );
alter table Pricing
add constraint P_FI_id foreign key (FI_id) references Food_Item (FI_id) on delete cascade;
До сих пор я пробовал довольно много вещей, включая обеспечение того, что значения полей имеют один и тот же тип, и что оба ключа имеют одинаковое число значения.