簡體   English   中英

使用帶有和不帶有FOREIGN KEY的REFERENCES之間的區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM