8

私はMySQL5.1のドキュメントを見ましたが、それでもこれを理解することはできません。MySQLに入力したコードとシステムによって出力されたコードの違いに気づいたのです。

コードサンプル01と02の違いは何ですか?つまり、02はCONSTRAINT以前に追加されFOREIGN KEYています-なぜ、そしてそれは何をするのですか?

CODE_SAMPLE_01:

FOREIGN KEY (TABLE_02_nID_FK__TABLE_01_sID_PK) REFERENCES TABLE_01(TABLE_01_sID_PK),

コンテクスト:

CREATE TABLE `TABLE_02` (
  `TABLE_02_sID_PK` int(8) NOT NULL,
  `TABLE_02_nID_FK__TABLE_01_sID_PK` int(8) NOT NULL,
  `TABLE_02_cID` int(8) NOT NULL,
  `TABLE_02_data01` varchar(128) default NULL,
  `TABLE_02_data02` varchar(128) NOT NULL,
  `create_timestamp` DATETIME DEFAULT NULL,
  `update_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`TABLE_02_sID_PK`),
  FOREIGN KEY (TABLE_02_nID_FK__TABLE_01_sID_PK) REFERENCES TABLE_01(TABLE_01_sID_PK),
  INDEX `TABLE_02_nID_FK__TABLE_01_sID_PK` (`TABLE_02_nID_FK__TABLE_01_sID_PK`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CODE_SAMPLE_02:

CONSTRAINT `table_02_ibfk_1` FOREIGN KEY (`TABLE_02_nID_FK__TABLE_01_sID_PK`) REFERENCES `table_01` (`TABLE_01_sID_PK`)

コンテクスト:

CREATE TABLE `table_02` (
  `TABLE_02_sID_PK` int(8) NOT NULL,
  `TABLE_02_nID_FK__TABLE_01_sID_PK` int(8) NOT NULL,
  `TABLE_02_cID` int(8) NOT NULL,
  `TABLE_02_data01` varchar(128) DEFAULT NULL,
  `TABLE_02_data02` varchar(128) NOT NULL,
  `create_timestamp` datetime DEFAULT NULL,
  `update_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`TABLE_02_sID_PK`),
  KEY `TABLE_02_nID_FK__TABLE_01_sID_PK` (`TABLE_02_nID_FK__TABLE_01_sID_PK`),
  CONSTRAINT `table_02_ibfk_1` FOREIGN KEY (`TABLE_02_nID_FK__TABLE_01_sID_PK`) REFERENCES `table_01` (`TABLE_01_sID_PK`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4

1 に答える 1

11

オプションのCONSTRAINTキーワードを使用すると、外部キーの名前を指定できます。これがないと、名前が自動的に生成されます。

この名前は、INFORMATION_SCHEMATABLE_CONSTRAINTSテーブルで確認できます。

于 2010-12-03T21:14:58.153 に答える