使用带有和不带有FOREIGN KEY的REFERENCES之间的区别?

基本上,我想知道在使用带有或不带有外键的REFERENCES之间的区别。

我有以下两个示例:

CREATE TABLE Employee 

(

id INT,

name VARCHAR(50),

birthYear INT,

boss INT REFERENCES Employees(id),

worksAt INT NOT NULL REFERENCES Department(id) ON DELETE CASCADE,

PRIMARY KEY (id,worksAt)

);

范例2:

CREATE TABLE Department 

(

id INT PRIMARY KEY,

name VARCHAR(50),

numberOfEmployees INT,

location INT NOT NULL,

country INT NOT NULL,

manager INT,

FOREIGN KEY (location,country) REFERENCES Location(locId,countryId),

UNIQUE KEY (manager)

);

我要问的是,为什么第二个示例为什么使用FOREIGN KEY关键字,而第一个示例仅使用REFERENCES。

另外,第一个似乎引用了自己(我认为Employees中的s是一个错误)。如果是这样,如果引用自己,为什么要使用REFERENCES?

回答:

恭喜你!您偶然发现了MySQL的一种古怪怪癖。第一种语法绝对不执行任何操作。是 无声的 ,是的, 无声地 忽略了。

此外,InnoDB不识别或不支持将引用定义为列规范一部分的“内联引用规范”(按照SQL标准定义)。仅当作为单独的FOREIGN

KEY规范的一部分指定时,InnoDB才接受REFERENCES子句。对于其他存储引擎,MySQL Server解析并忽略外键规范。

距离create table文档的一半还差一点。

以上是 使用带有和不带有FOREIGN KEY的REFERENCES之间的区别? 的全部内容, 来源链接: utcz.com/qa/435252.html

回到顶部