外部キー制約追加 #add index #foreign key

mysql> alter table テーブル名 add foreign key (カラム名) references 参照先テーブル名 (参照先カラム名);

mysql> alter table table2 add foreign key (column2) references table1 (column1);
Query OK, 15 rows affected (0.03 sec)
Records: 15  Duplicates: 0  Warnings: 0

mysql>

以下のようなエラーが出てしまった場合は、条件に沿っていない場合がある。

ERROR 1005 (HY000): Can't create table 'elvis_store.#sql-61_10' (errno: 150)
  • indexがない
  • 参照元と参照先のカラムデータ型が異なる
    • 子と親のデータ型は一致していなければいけない
  • InnoDBでない
    • show table status \Gで確認できる
  • 参照先カラムにデフォルトが入っている
  • on delete set nullを指定しているが参照先がnot nullとなっている
  • 参照元と参照先のデータが一致していること