如何使用外键自动递增记录?

时间:2015-04-20 19:58:01

标签: mysql mysql-workbench

  DROP TABLE IF EXISTS `student`;  
 CREATE TABLE `student` (  
  `student_id` int(11) NOT NULL AUTO_INCREMENT,  
  `student_name` varchar(45) DEFAULT NULL,  
  PRIMARY KEY (`student_id`)  
) ENGINE=InnoDB AUTO_INCREMENT=901840505 DEFAULT CHARSET=utf8;  


DROP TABLE IF EXISTS `grades`;  
 CREATE TABLE `grades` (  
  `grade_id` int(11) NOT NULL AUTO_INCREMENT,  
  `student_id` int(11) DEFAULT NULL,  
  `grade` varchar(45) DEFAULT NULL,  
  PRIMARY KEY (`grade_id`),  
  KEY `stdgrd_idx` (`student_id`),  
  CONSTRAINT `stdgrd` FOREIGN KEY (`student_id`) REFERENCES `student`   (`student_id`)
      ON DELETE CASCADE ON UPDATE CASCADE  
) ENGINE=InnoDB AUTO_INCREMENT=1641 DEFAULT CHARSET=utf8;  

我创建了两个表studentgrade。为了将student_id的自动递增值发送到grade(student_id)表,我在这两个记录之间建立了一个外键,如下所示:

CONSTRAINT `stdgrd` FOREIGN KEY (`student_id`) REFERENCES `student`
(`student_id`) ON DELETE CASCADE ON UPDATE CASCADE  

我的问题是当我在student_name表中的student记录中插入值时,student(student_id)会自动递增,所以我希望将自动递增的值发送​​到{{1 }} 但是grade(student_id)表没有取得价值。我已经尝试了grade中发布的问题的帮助,但我无法做到。请任何人可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

外键关系仅用于验证子列的内容。没有自动数据传输。插入student并因此生成student_id auto_inc值将不会立即影响grades表。这只会创建一个student_id值,现在是gradesstudent_id列的可接受内容。