引用和外键之间的区别

时间:2013-02-03 13:15:43

标签: mysql foreign-keys

这是sql中的两个声明

create table bookAdoption
(   
    courseId int,
    sem int,
    isbn int,
    PRIMARY KEY(courseId, sem, isbn),       
    FOREIGN KEY(courseId) REFERENCES course(courseId),
    FOREIGN KEY(sem) REFERENCES enroll(sem)
);

和另一个

CREATE TABLE bookAdoption
(
    courseId INT REFERENCES course(courseId) ,
    sem INT REFERENCES enroll(sem),
    isbn INT REFERENCES text1(isbn),
    PRIMARY KEY(courseId, sem, isbn)

);

仅使用引用关键字

之间的区别

并同时使用引用和外部关键字 screenshot

2 个答案:

答案 0 :(得分:4)

如果没有外键约束,则无法使用REFERENCES,引自MySQL Documentation, FOREIGN KEY Constraints

  

此外,InnoDB无法识别或支持“内联参考”   规范“(在SQL标准中定义)引用所在的位置   被定义为列规范的一部分。 InnoDB接受   仅当指定为单独的FOREIGN的一部分时,REFERENCES子句   KEY规范。对于其他存储引擎,MySQL Server解析和   忽略了外键规范。

答案 1 :(得分:0)

FOREIGN KEY只能引用一个UNIQUE列。

在实践中,我们将外键约束添加到主键,我们说FK 引用 PK。但是可以使用任何UNIQUE列添加这样的约束。

为了使其工作,SQL语法要求您:

  • 声明外键
  • 告诉它引用什么