我有2个父表(媒体,广告)和1个子表(路径)。任何父表(媒体或广告)中的每个值都可以包含指向路径表中多个值的链接。 当我尝试在'paths'中插入值时,我得到一个错误。如果我有2个'路径'表(path_media,path_ads),每个父表一个表,并为每个子父表设置1个外键约束,这将有效,但为什么我必须复制表路径而不是限制它们FK?
//创建表格
CREATE TABLE `media` (
`id` int(11) NOT NULL,
`title` varchar(255),
PRIMARY KEY (`id`)
) ;
CREATE TABLE `ads` (
`id` int(11) NOT NULL,
`description` text,
PRIMARY KEY (`id`)
);
CREATE TABLE `paths` (
`id` int(11) NOT NULL,
`path` varchar(1000) NOT NULL,
`media_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `media_id` (`media_id`)
);
//添加2个外键
ALTER TABLE `paths`
ADD CONSTRAINT `paths_ibfk_1` FOREIGN KEY (`media_id`) REFERENCES `media` (`id`),
ADD CONSTRAINT `paths_ibfk_2` FOREIGN KEY (`media_id`) REFERENCES `ads` (`id`);
// sql query
INSERT INTO paths (path, media_id)
VALUES (?, ?)");
//错误
Cannot add or update a child row: a foreign key constraint fails (`database`.`paths`, CONSTRAINT `paths_ibfk_2` FOREIGN KEY (`media_id`) REFERENCES `ads` (`id`))"