mysql - 无法将数据插入MySQL子表

标签 mysql database foreign-keys mysql-workbench

这是一个相当常见的问题,我还没有找到解决方案,我也没有找到在线解决方案,我已经搜索了几天(如果有人知道一个,只需给我链接将不胜感激) )。

我已经使用 MySQL Workbench 创建了一个数据库,使用 wamp 创建了服务器,并将使用 netbeans ide 8.0 为我的项目创建一个 php 应用程序。

我的问题是我无法在“子”表中添加数据(对不起,这个术语不准确)。以下代码来自 MySQL Workbench 的“来自 eer 模型的正向工程 sql 代码”,并且仅考虑我遇到问题的子表之一:

CREATE TABLE IF NOT EXISTS `ASTIR`.`HOTEL` (
`ID` INT NOT NULL,
`NAME` VARCHAR(45) NOT NULL,
`STREET` VARCHAR(45) NULL,
`No` INT NULL,
`ΤΚ` INT NULL,
`CITY` VARCHAR(45) NULL,
`RATING` SMALLINT NULL,
`YEAR OF CONSTRUCTION` YEAR NULL,
`YEAR OF RENOVATION` YEAR NULL,
PRIMARY KEY (`ID`))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `ASTIR`.`ROOM` (
`HOTEL_ID` INT NOT NULL,
`ROOM_No` INT NOT NULL,
`TYPE` VARCHAR(45) NOT NULL,
`PRICE` DOUBLE NOT NULL,
PRIMARY KEY (`HOTEL_ID`, `ROOM_NO`),
INDEX `fk_ROOM_HOTEL1_idx` (`HOTEL_ID` ASC),
CONSTRAINT `fk_ROOM_HOTEL1`
FOREIGN KEY (`HOTEL_ID`)
REFERENCES `ASTIR`.`HOTEL` (`ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

所以,当我输入命令时

INSERT INTO ROOM(HOTEL_ID,ROOM_No,TYPE,PRICE) VALUES(1,1,'SUITE',55);

我收到消息了

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`ASTIR`.`ROOM`, CONSTRAINT `fk_ROOM_HOTEL1` FOREIGN KEY (`HOTEL_ID`) REFERENCE)

任何想法都会有所帮助,非常感谢:/

最佳答案

该错误意味着 HOTEL 表中没有 id=1 的行。

您需要先插入父行 (HOTEL),然后才能插入子行 (ROOM)。

INSERT INTO HOTEL(ID,NAME) VALUES(1,'First Hotel');
INSERT INTO ROOM(HOTEL_ID,ROOM_No,TYPE,PRICE) VALUES(1,1,'SUITE',55);

关于mysql - 无法将数据插入MySQL子表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23408366/

相关文章:

java.lang.String 无法转换为 JSONObject

mysql - 在 Rails 中限制字符串属性的大小是否会使数据库变得更小?

c# - Windows Phone 8.1 silverlight 中带有 Entity Framework 的 SQLite

python - 在 sqlalchemy、数据库、ORM 中使用标签

java - 如何获取redis中特定hash下的所有key和value?

mysql - 添加外键时报错 'Table ' .\schema\table' already exists

mysql - 当它引用的字段自动递增时,我如何有效地模仿外键约束?

php - 显示默认图像

java - 使用ArrayList从数据库中检索数据并将其显示在JSP中

sql - 错误 1005 (HY000) : Can't create table when using foreign keys