[英]Difference between using REFERENCES with and without FOREIGN KEY?
基本上,我想知道在使用帶有或不帶有外鍵的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
文檔僅一半的路程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.