【MySQL】外部参照について
今日はMySQLの外部参照について話したいと思います。
慣れないキーワードがちょっと出てきますが、安心してください。
MySQLの外部参照はこれだけで覚えます。
キーワード
CONSTRAINT
REFERENCES
RESTRICT
NO ACTION
CASCADE
SET NULL
基本用法
1 2 3 4 5 6 | CREATE TABLE 子テーブル名(子カラム名 データ型, CONSTRAINT キー名 FOREIGN KEY (子カラム名) REFERENCES 親テーブル名(親カラム名) ON DELETE reference_option ON UPDATE reference_option ) ENGINE=InnoDB; |
reference_option
RESTRICT
ON DELETE句やON UPDATE句にRESTRICTを指定した場合は、親テーブルに対して更新や削除を行うとエラーが発生します。RESTRICTはON DELETE句やON UPDATE句を明示的に指定しなかった場合に設定される値です。
NO ACTION
ON DELETE句やON UPDATE句にNO ACTIONを指定した場合は、親テーブルに対して更新や削除を行うとエラーが発生します。MySQLにおいてはNO ACTIONとRESTRICTは同じ挙動となります。
CASCADE
ON DELETE句やON UPDATE句にCASCADEを指定した場合は、親テーブルに対して更新を行うと子テーブルで同じ値を持つカラムの値も合わせて更新されます。また親テーブルに対して削除を行うと子テーブルで同じ値を持つデータが削除されます。
SET NULL
ON DELETE句やON UPDATE句にSET NULLを指定した場合は、親テーブルに対して更新を行うと子テーブルで同じ値を持つカラムの値がNULLに更新されます。また親テーブルに対して削除を行うと子テーブルで同じ値を持つデータのカラムの値がNULLに更新されます。
参考リンク
http://dev.mysql.com/doc/refman/5.1/ja/innodb-foreign-key-constraints.html
http://www.dbonline.jp/mysql/table/index12.html
Author Profile
スターフィールド編集部
SHARE