概要
親テーブルの行を削除した際に、関連する子テーブルのデータも自動的に削除したい
データベースにおいて、親テーブルと子テーブルの関連性を維持するために外部キー制約が使用されます。
親テーブルの行を削除した際に、関連する子テーブルのデータも自動的に削除する必要がある場合、ON DELETE CASCADEオプションを利用することで便利です。
外部キー制約と「ON DELETE CASCADE」オプションの活用例
▼ 親テーブルと子テーブルを作成する際に「ON DELETE CASCADE」オプションを指定する例
-- 親テーブルの作成
CREATE TABLE parent_table (
id INT PRIMARY KEY
);
-- 子テーブルの作成
CREATE TABLE child_table (
id INT PRIMARY KEY,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES parent_table (id) ON DELETE CASCADE
);
上記では、parent_table
という親テーブルとchild_table
という子テーブルを作成しています
child_table
のparent_id
列はparent_table
のid
列を参照する外部キー制約を設定し、
ON DELETE CASCADEオプションを指定しています
この設定により、親テーブルの行が削除されると、関連する子テーブルの対応する行も自動的に削除されます
注意点
データベース管理システムによっては、「ON DELETE CASCADE」オプションがサポートされていない場合や、制約名や参照するテーブル・列に制限がある場合があるとのこと