0
我正在尝试创建校园结构。所以建筑物有地板,地板有房间。我正在尝试创建一个关系数据库,使多个房间与一个楼层和多个楼层与其建筑物相关。SQL中的一对多关系 - 外键错误
这里是我的建筑物和地板的表结构:
CREATE TABLE `building` (
`id` int(11) NOT NULL,
`name` varchar(128) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
CREATE TABLE `floor` (
`id` int(11) NOT NULL,
`building_id` int(11) DEFAULT NULL,
`level` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `floor_building_id__fk` (`building_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
我想在与同一building_id
地板表中插入多个楼层使用:
INSERT INTO `floor` SET id=3, `number` = 420, building_id=(SELECT id FROM building WHERE id=2);
不过我不断收到以下错误:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`seatspace`.`floor`, CONSTRAINT `building_id` FOREIGN KEY (`id`) REFERENCES `building` (`id`))
我想插入,更新并删除与其指定的building_id
相关的楼层。任何帮助,将不胜感激。
阅读错误信息。您的FK表示floor * id *是建筑物ID;它应该说building_id是。请阅读并在[mcve]上采取行动,缺乏一个意味着这个问题是无关紧要的。比如你应该给FK DDL。例如,给定的查询似乎不是产生错误的那个 - 没有数字。 PS您已经拥有建筑物ID,您不需要在此选择子选项。我想这个子选择最终会提到多个建筑物。但要更新不能使用=的多个建筑物,除了其他更改外,还需要IN。阅读关于更新和插入。 – philipxy