外键 - 一个子表到多个父表

时间:2017-03-02 18:03:05

标签: mysql foreign-keys constraints

我有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`))"

0 个答案:

没有答案