- ON DELETE CASCADE を使用する方法: 一部のデータベースシステムでは、外部キー制約を設定する際に「ON DELETE CASCADE」オプションを指定できます。これにより、親テーブルの行が削除された場合に、関連する子テーブルの行も自動的に削除されます。以下は、このオプションを使用する例です。
CREATE TABLE 親テーブル (
id INT PRIMARY KEY,
名前 VARCHAR(100)
);
CREATE TABLE 子テーブル (
id INT PRIMARY KEY,
親_id INT,
FOREIGN KEY (親_id) REFERENCES 親テーブル(id) ON DELETE CASCADE
);
- トリガーを使用する方法: 一部のデータベースシステムでは、トリガーを使用して外部キーが削除された場合に特定のアクションを実行することができます。以下は、トリガーを使用して関連するテーブルから行を削除する例です。
CREATE TRIGGER テーブル名_削除
AFTER DELETE ON 親テーブル
FOR EACH ROW
BEGIN
DELETE FROM 子テーブル WHERE 親_id = OLD.id;
END;
- JOIN を使用して削除する方法: いくつかのデータベースシステムでは、JOIN を使用して関連するテーブルから行を削除することができます。以下は、JOIN を使用した削除の例です。
DELETE 子テーブル
FROM 子テーブル
JOIN 親テーブル ON 子テーブル.親_id = 親テーブル.id
WHERE 親テーブル.id = [削除する親テーブルのID];
これらは一般的な方法ですが、データベースシステムによってはサポートされていない場合もあります。使用しているデータベースのドキュメントを参照して、適切な方法を見つけることをお勧めします。
以上が、外部キーが削除された場合にテーブルから行を削除するいくつかの方法です。