插入带有外键的表的Mysql问题

时间:2014-03-27 05:03:33

标签: mysql

我是MySql的新手。 我有一个问题,插入到表与foriegnKeys到另一个表。下面提到的是父表和子表的语法。

===家长====

 CREATE TABLE `userTable_temp` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `contactNum` varchar(64) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `contactNum` (`contactNum`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

====孩子=====

 CREATE TABLE `friendTable_temp` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `userId` int(32) DEFAULT NULL,
  `friendId` int(32) DEFAULT NULL,
  `last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uc_test` (`userId`,`friendId`),
  KEY `friendId` (`friendId`),
  CONSTRAINT `friendTable_temp_ibfk_2` FOREIGN KEY (`friendId`) REFERENCES `userTable`   (`id`),
  CONSTRAINT `friendTable_temp_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `userTable` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1

我能够将一些记录插入到friendTable_temp中,但在第4次插入后,我总是会收到以下错误

 "Cannot add or update a child row: a foreign key constraint fails (`contacts_db`.`friendTable_temp`, CONSTRAINT `friendTable_temp_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `userTable` (`id`))"

发生此问题时,我在UserTable_temp

中有以下数据

的MySQL>从userTable_temp中选择id,contactNum;

+ ---- + --------------- +

| id | contactNum |

+ ---- + --------------- +

| 1 | 123455677 |

| 2 | 56465465464 |

| 3 | 567576567 |

| 4 | 1231231231 |

| 5 | 35453453454 |

| 6 | 45645645645 |

+ ---- + --------------- +

6行(0.00秒)

当我尝试这样做时,会发生上述错误

插入friendTable_temp(userId,friendId)值(6,1);

请你帮我找出我做错了什么?

注意: 插入friendTable_temp(userId,friendId)值(5,1);

查询正常,1行受影响(0.00秒)

由于

1 个答案:

答案 0 :(得分:0)

将您的Child表定义更改为下面。

CREATE TABLE `friendTable_temp` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `userId` int(32) DEFAULT NULL,
  `friendId` int(32) DEFAULT NULL,
  `last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uc_test` (`userId`,`friendId`),
  KEY `friendId` (`friendId`),
  CONSTRAINT `friendTable_temp_ibfk_2` FOREIGN KEY (`friendId`) REFERENCES `userTable_temp`   (`id`),
  CONSTRAINT `friendTable_temp_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `userTable_temp` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1