MySQL外部キーの例


外部キー構文:外部キーの定義構文:[CONTRAINT symbol]FOREGN KEY[id](index_col_name,...)    REFERENCES tbl_name (index_col_name, ...) [ON DELETE{RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT}[ON UPDATE{RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT}]この構文はCREATE TABLEとALTER TABLEの場合に使用できますが、CONTRAINT symbolを指定しないとMYSQLは自動的に名前を生成します.ON DELETE、ON UPDATEはイベントトリガ制限を表し、パラメータを設定可能:RESTRICT(外部キーの変更を制限)CASCADE(外部キーの変更に追従)SET NULL(NULL値を設定)SET DEFAULT(デフォルト値を設定)NO ACTION(動作なし、デフォルト)表は以下のように作成する:
CREATE TABLE IF NOT EXISTS `user`(
  `login_name` varchar(256) NOT NULL,
  `user_name` varchar(256) NOT NULL,
  PRIMARY KEY (`login_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `fortest`(
  `login_name` varchar(256) NOT NULL,
  `ip` varchar(64) NOT NULL,
  PRIMARY KEY (`login_name`),
  CONSTRAINT `fortest_fk_1` FOREIGN KEY (`login_name`)  REFERENCES `user` (`login_name`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

要点:1テーブルエンジンはInnoDB 2が参照する外部キーでなければならない別のテーブルのプライマリキーでなければならない3 2つのキーのデータ型は一致しなければならない