Learn or Die

生涯勉強。Macです。

外部キー制約付きテーブルを作成する

外部キー制約を使⽤する場合の注意事項

  • 親テーブルおよび⼦テーブルでは FOREIGN KEY 制約の対象となるカラムに対してインデックスが必要
  • ⼦テーブルの対象カラムと親テーブルの対象カラムは同じデータ型である必要がある

サンプル

-- 親テーブル作成
create table db_name.parent_tb(department varchar(10) primary key);
-- INSERTする
insert into db_name.parent_tb 
values('経理部'),
('営業部'),
('システム部'),
('企画部');

/* ⼦テーブル作成
CREATE TABLE ⼦テーブル名(⼦カラム名 データ型, INDEX インデックス名(⼦カラム名),
FOREIGN KEY 外部キー名(⼦カラム名) REFERENCES 親テーブル名(親カラム名))
*/
create table db_name.child_tb(id int, name varchar(10), department varchar(10),
index index_name(department),
foreign key fk_name (department) references parent_tb(department)
ON DELETE cascade ON UPDATE cascade );
-- INSERTする
insert into db_name.child_tb 
values(1, 'Yamada', '経理部'),
(2, 'Suzuki', 'システム部'),
(3, 'Okada', '営業部'),
(4, 'Hosoda', 'システム部');

-- 親テーブルを更新・削除をすると⼦テーブルも連動する
update db_name.parent_tb set department = '情報システム部' where department = 'システム部';

参考サイト

www.dbonline.jp