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(動作なし、デフォルト)表は以下のように作成する:
要点:1テーブルエンジンはInnoDB 2が参照する外部キーでなければならない別のテーブルのプライマリキーでなければならない3 2つのキーのデータ型は一致しなければならない
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つのキーのデータ型は一致しなければならない