2012-03-06 35 views
1

私はvendor_idの外部キーを強制以下の表、持っている:私は誰か他の人のテーブルの上に探していた、そしてそれはKEYを持っていましたが、次のように、CONSTRAINTを示さなかった外部キーの制約がない「キー」とは何ですか?

CREATE TABLE `notes` (
    `vendor_id` varchar(20) NOT NULL DEFAULT '', 
    KEY `vendor_id` (`vendor_id`), 
    CONSTRAINT `notes_ibfk_1` FOREIGN KEY (`vendor_id`) REFERENCES `title` (`vendor_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

を:

CREATE TABLE `notes` (
    `vendor_id` varchar(20) NOT NULL DEFAULT '', 
    KEY `vendor_id` (`vendor_id`), 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

KEYは他に何も含まれていません。

答えて

5

KEYINDEXの同義語であるので、この場合には、vendor_idはそれで作成したインデックスを持っていますが、特にテーブルのPRIMARY KEY、一意性を強制ことになるように定義されていません。 MySQL CREATE TABLE docsから

KEYは、通常INDEXの同義語です。キー属性PRIMARY KEYは、列定義で与えられたときにKEYとして指定することもできます。これは、他のデータベースシステムとの互換性のために実装されました。

3

としては§12.1.14 "CREATE TABLE Syntax" of the Reference Manualで説明:

KEYは、通常INDEXの同義語です。キー属性PRIMARY KEYは、列定義で指定されている場合にはKEYと指定することもできます。これは、他のデータベースシステムとの互換性のために実装されました。

は、(最初​​の文は、あなたの場合に適用されるものです。それはちょうど notes.vendor_idvendor_idという名前のインデックスを作成しています。)

関連する問題