невозможно добавить ограничение внешнего ключа в ранее созданную дочернюю таблицу - PullRequest
0 голосов
/ 12 января 2020

Итак, у меня ошибка, когда я не могу создать таблицу, а затем добавить ограничение внешнего ключа в таблицу. ошибка, которую я получаю, выглядит следующим образом:

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;

До сих пор я пробовал довольно много вещей, включая обеспечение того, что значения полей имеют один и тот же тип, и что оба ключа имеют одинаковое число значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...