MySQL:`REFERENCES`对'FOREIGN KEY` +`REFERENCES`

时间:2015-09-26 18:44:26

标签: mysql database database-design

  

MySQL:REFERENCES vs FOREIGN KEY + REFERENCES

我认为REFERENCES是更冗长的FOREIGN KEY REFERENCES语法的某种简写语法。

但是,下表并不像是受外键约束限制。我可以轻松添加courseid不在Courses关系中的元组。

有人可以澄清这个问题吗?

CREATE TABLE `Exam`(
    `courseid` VARCHAR(20) REFERENCES `Courses`(courseid) ON DELETE RESTRICT ON UPDATE CASCADE,
    `examno` INT(1) DEFAULT 1 CHECK(`examno` >= 1),
    `weight` FLOAT(5) DEFAULT 1 CHECK(`weight` > 0),
    PRIMARY KEY(courseId, examNo)
);

1 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的mysql?

运行此内容后会得到什么?

  

show create table Exam;

我得到的是:

     CREATE TABLE `Exam` (
     `courseid` varchar(20) NOT NULL DEFAULT '',
     `examno` int(1) NOT NULL DEFAULT '1',
      `weight` float DEFAULT '1',
      PRIMARY KEY (`courseid`,`examno`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

这意味着MySQL忽略了" REFERENCES" create table语句的一部分。我认为你确实需要完整的声明,如:

  

FOREIGN KEY(parent_id)           REFERENCES parent(id)           ON DELETE CASCADE

相关问题