18

基本的に、外部キーがある場合とない場合のREFERENCESの使用の違いを知りたいです。

私はこれらの2つの例を持っています:

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)
);

ここで私が尋ねているのは、2番目の例でFOREIGN KEYキーワードを使用しているのに、最初の例では単にREFERENCESを使用している理由です。

また、最初のものはそれ自体を参照しているようです(Employeesのsは間違いだと思います)もしそうなら、それ自体を参照しているのになぜREFERENCESを使用するのですか?

4

1 に答える 1

23

おめでとう!あなたはMySQLの奇妙な癖の1つに出くわしました。最初の構文はまったく何もしません。それは黙って、はい、黙って無視されます。

さらに、InnoDBは、参照が列仕様の一部として定義されている「インラインREFERENCES仕様」(SQL標準で定義されている)を認識またはサポートしません。InnoDBは、個別のFOREIGNKEY指定の一部として指定された場合にのみREFERENCES句を受け入れます。他のストレージエンジンの場合、MySQLサーバーは外部キー指定を解析して無視します。

ドキュメントの半分を少し下回っていcreate tableます。

于 2013-01-09T08:21:16.773 に答える