QA@IT

MySQLでテーブル作成(外部キー設定)

3343 PV

MySQLでテーブルをCREATEしようとしているのですがうまくいきません。

  • 親テーブル

create table oya(
 id bigint(20) UNSIGNED,
 keyword tinytext NOT NULL,
 test tinytext NOT NULL,
 unique(doc_id,keyword(20))
);

  • 子テーブル

create table ko(
 ko_id bigint(20) UNSIGNED,
 ko_id2 bigint(20) UNSIGNED,
 test tinytext NOT NULL,

 UNIQUE(ko_id,ko_id2),
 FOREIGN KEY (ko_id, ko_id2) REFERENCES oya(id, id)
 ON UPDATE CASCADE ON DELETE CASCADE
);

ポイントとしては、子テーブルの2つの主キー属性(複合キー)が、親テーブルの同じ属性を参照しようとしています。
このようなことは出来ないのでしょうか?

回答

次のように、ko_idko_id2 にそれぞれ外部キーを設定すれば良いと思います。

create table ko(
  ko_id bigint(20) UNSIGNED,
  ko_id2 bigint(20) UNSIGNED,
  test tinytext NOT NULL,
  UNIQUE(ko_id,ko_id2),
  FOREIGN KEY (ko_id) REFERENCES oya(id)
    ON UPDATE CASCADE ON DELETE CASCADE,
  FOREIGN KEY (ko_id2) REFERENCES oya(id)
    ON UPDATE CASCADE ON DELETE CASCADE
);
編集 履歴 (0)
  • 二つに分ければよかったんですね!ありがとうございました。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。