コンポジットキーの列の1つを外部キーとして使用できるかどうかを確認しようとしていました。そして私は奇妙な結果を得ました。コンポジットキーの列の1つを外部キーとして使用
CREATE TABLE TESTPARENT(
PK1 INT,
PK2 INT,
PRIMARY KEY(PK1,PK2)
);
Query OK, 0 rows affected (0.01 sec)
CREATE TABLE TESTCHILD1(
FK1 INT,
FOREIGN KEY (FK1) REFERENCES TESTPARENT(PK1)
);
Query OK, 0 rows affected (0.01 sec)
CREATE TABLE TESTCHILD2(
FK2 INT,
FOREIGN KEY (FK2) REFERENCES TESTPARENT(PK2)
);
ERROR 1005 (HY000): Can't create table 'test.TESTCHILD2' (errno: 150)
MySQLでは、主キーの最初の列のみを参照する外部キーを作成できますが、2番目の列は作成しません。これは奇妙ですか?または私は愚かなのですか?
[documentation](https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html)に従う: "InnoDBは外部キーに任意のインデックスを参照させるただし、参照先の表には、参照先の列が同じ順序で*最初の列としてリストされている索引が必要です。 PKは、FK1のそのようなインデックスです。 –
@FredericoFalcao私はPK1とPK2を同じ方法で宣言しましたが、なぜPK1はPK2ではなくユニークなのですか? – Jasir