MySQL 外部キー 追加する ALTER

MySQL
スポンサーリンク

 

外部キーとは?

カラムに FOREIGN KEY 制約(外部キー制約)を設定することで、対象のカラムに格納できる値を他のテーブルに格納されている値だけに限定することができます。

DBOnlineさん

 

なるほど、こういうことっすな。

 

FOREIGN KEY 制約を設定は子テーブル側で行います。

なるほど。ヒトカゲのほうで。

 

親テーブルの更新と削除を行った時にどうするのか

についても、更新・削除で、それぞれ設定できる。

 

すでに存在しているテーブルへの追加の仕方(ALTER)

すでに存在しているテーブルへの追加

ALTER TABLE 子テーブル名 ADD FOREIGN KEY(子の列名) REFERENCES 親テーブル名(親の列名)

参照

 

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) REFERENCES tbl_name (index_col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option]

MySQL公式

ALTER TABLE テーブル名 ADD FOREIGN KEY 外部キー名(参照元カラム名) REFERENCES 参照先テーブル名(参照先カラム名);

参照

これは外部キー名を自分で名付ける場合ですな。

 

外部キー名は指定しない場合は、「テーブル名」_ibfk_[n] ([n]は通番)となります。ちなみにibfkは「InnoDB Foreign key」らしいです。

参考

 

追加しようとしたら失敗した。

原因は親テーブルに主キーが設定されてないことだった。

 

 

外部キー確認

以下のコマンドで確認できる。

SHOW CREATE TABLE table_name;

qiita

外部キー削除

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol;

MySQL公式

 

コメント