6
私はMySQL 5.1のドキュメントを見てきましたが、まだこれを理解できませんでした。つまり、私がMySQLに入力したコードとシステムによって出力されたコードの違いに気付きました。MySQLでは、FKの "CONSTRAINT"とは何ですか?
コードサンプル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),
CONTEXT:
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`)
CONTEXT:
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;
私はINFORMATION_SCHEMAが何であるかわからないけれども、ありがとう、それは何であるかについての素晴らしい明確な答えです。あなたが提供したリンクを見ると、それはMySQLのパンくずリストの親リンクです。それはデータベースのデータベースですか?もう一度、ありがとう! – blunders
@blunders:INFORMATION_SCHEMAはMySQLの仮想データベースです。 'SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS' –
非常にクール、ありがとう - あなたの答えは巨大な助けでした! (+2、プラス答えとして選択) – blunders