Я получаю сообщение об ошибке, которое утверждает: Error Code: 1217. Cannot delete or update a parent row: a foreign key constraint fails
Ограничение внешнего ключа не удается (MySQL)
Не знаю, почему я получаю эту ошибку. Любая подсказка?
код ниже:
-- DROP EXISTING TABLES --
DROP TABLE IF EXISTS `category`;
DROP TABLE IF EXISTS `format`;
DROP TABLE IF EXISTS `customer`;
DROP TABLE IF EXISTS `rentals`;
DROP TABLE IF EXISTS `videos`;
-- CREATE CATEGORY TABLE --
CREATE TABLE `category` (
`category_id` int(10) NOT NULL,
PRIMARY KEY (`category_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
-- CREATE FORMAT TABLE --
CREATE TABLE `format` (
`format_id` int(10) NOT NULL,
PRIMARY KEY (`format_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
-- CRTEATE VIDEOS TABLE --
CREATE TABLE `videos` (
`video_id` int(10) NOT NULL,
`title` varchar(50) NOT NULL,
`format_id` int(10) NOT NULL,
`cost` double NOT NULL,
`category_id` int(10) NOT NULL,
PRIMARY KEY (`video_id`),
CONSTRAINT `fk_video_format` FOREIGN KEY (`format_id`) REFERENCES `format` (`format_id`),
CONSTRAINT `fk_video_category` FOREIGN KEY (`category_id`) REFERENCES `category` (`category_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
-- CREATE CUSTOMER TABLE --
CREATE TABLE `customer` (
`customer_id` int(10) NOT NULL,
`last_name` varchar(50) NOT NULL,
`first_name` varchar(50) NOT NULL,
`address` varchar(100) NOT NULL,
`city` varchar(50) NOT NULL,
`state` varchar(10) NOT NULL,
`zip` int(10) NOT NULL,
PRIMARY KEY (`customer_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
-- CREATE RENTALS TABLE --
CREATE TABLE `rentals` (
`rental_id` int(10) NOT NULL,
`date_out` datetime NOT NULL,
`date_due` datetime NOT NULL,
`date_in` datetime NOT NULL,
`delivery_status` varchar(50),
`cost` double NOT NULL,
`late_fee` double NOT NULL,
`customer_id` int(10) NOT NULL,
`video_id` int(10) NOT NULL,
PRIMARY KEY (`rental_id`),
CONSTRAINT `fk_video_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`),
CONSTRAINT `fk_video_cost` FOREIGN KEY (`cost`) REFERENCES `videos` (`cost`),
CONSTRAINT `fk_video_id` FOREIGN KEY (`video_id`) REFERENCES `videos` (`video_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
Я считаю, что все совпадает ключ и внешний ключ-накрест. Форматирование выглядит корректно. Если я не делаю что-то совершенно неправильное здесь.
'fk_video_cost ссылки видео (стоимость)' - вы действительно собираетесь иметь стоимость быть ключом? – jdigital
@jdigital О! Благодаря! Я только начал изучать MySQL вчера и пытаюсь совершенствовать свое обучение. Спасибо огромное! :) – Donson
Возможно, вам будет полезно выполнить один SQL-запрос за раз, чтобы уменьшить проблемы. – jdigital