>> MySQL :: MySQL 4.1 リファレンスマニュアル :: 7.5.5.2 FOREIGN KEY 制約
【サンプル1】
-- 既存テーブル
CREATE TABLE `Foo` (
`a_id` int(11) NOT NULL default '0',
`b_id` int(11) NOT NULL default '0',
`name` text,
PRIMARY KEY (`a_id`,`b_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
-- 外部キー追加
ALTER TABLE Bar
ADD FOREIGN KEY (`a_id`, `b_id`)
REFERENCES `Foo` (`a_id`, `b_id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
(メモ)
ON DELETE句やON UPDATE句にCASCADEを指定した場合は、
親テーブルに対して更新を行うと子テーブルで同じ値を持つカラムの値も合わせて更新されます。
また親テーブルに対して削除を行うと子テーブルで同じ値を持つデータが削除されます
-- 外部キー削除
ALTER TABLE Bar DROP FOREIGN KEY `Bar_ibfk_1`;
※ SHOW CREATE TABLE BarをしてFOREIGN KEYに自動的に割り当てられたKEYの名前(`Bar_ibfk_1`みたいなの)を予め調べる
【サンプル2】
-- 「T_02_1」表の「ID」列に対して、「T_01_1」表の「ID」列を外部キーとして設定します。
ALTER TABLE T_02_1 ADD CONSTRAINT FK_02_1A
FOREIGN KEY (ID)
REFERENCES T_01_1(ID);
以上。