使用带有和不带有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