0

我有两个表 quizquizId 是主键。我已将其设置为 auto_increment 。我有另一个表 quizQuestions ,其中我希望 quiz 表的 quizID 作为外键。这些是查询:

    CREATE TABLE IF NOT EXISTS quiz (
      quizId int(11) NOT NULL AUTO_INCREMENT,
      subject varchar(30) DEFAULT NULL,
      examDate date DEFAULT NULL,
      PRIMARY KEY (quizId)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;


    CREATE TABLE IF NOT EXISTS quizQuestions
    (
      quizId int(11) NOT NULL AUTO_INCREMENT,
      questionId int(11) NOT NULL AUTO_INCREMENT,
      question varchar(30) DEFAULT NULL,
      option1 varchar(30) DEFAULT NULL,
      option2 varchar(30) DEFAULT NULL,
      option3 varchar(30) DEFAULT NULL,
      option4 varchar(30) DEFAULT NULL,
      answer varchar(30) DEFAULT NULL,  
      PRIMARY KEY (questionId),
      Foreign Key (quizId) references quiz(quizId)
    )

现在我想问一下,我在 quizQuestions 中的第一行是否正确,我是否应该在 quizQuestions 表中将 quizId 指定为 AUTO_INCREMENT,因为 quizId 是 quiz 表的主键?

4

1 回答 1

2

quizId 不应该是 auto_increment,在这种情况下它不会编译,因为它不是主键。正如所评论的,由于您正在创建一对多关系,因此您应该使 quizId 外键和 questionId 自动递增主键(就像您所做的那样)。

请注意,如果您将 quizId 设为主要和外部,您也可以使其自动递增,但这不是您想要的......

于 2013-07-31T04:39:30.323 回答