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