引用和外键的区别

tig*_*ger 5 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)
);
Run Code Online (Sandbox Code Playgroud)

而另一个

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

);
Run Code Online (Sandbox Code Playgroud)

只使用references关键字有什么区别

并同时使用引用和外来关键字 截屏

Mah*_*mal 5

您不能REFERENCES在没有外键约束的情况下使用,如MySQL 文档 FOREIGN KEY Constraints中引用的那样中引用的那样:

\n\n
\n

此外,InnoDB 不识别或支持 \xe2\x80\x9cinline REFERENCES\n 规范\xe2\x80\x9d (如 SQL 标准中定义),其中引用\n 被定义为列规范的一部分。仅当指定为单独的 FOREIGN\n KEY 规范的一部分时,InnoDB 才接受 REFERENCES 子句。对于其他存储引擎,MySQL 服务器会解析并忽略外键规范。

\n
\n