オプション ON DELETE CASCADE を使用すると、親表の行が削除されたときに、子表の対応する行を削除するかを指定できます。カスケード削除を指定しないと、データベース サーバのデフォルトの動作により、表内のデータがほかの表により参照 される場合、そのデータは削除できません。
このオプションを指定すると、後で親表の行を削除したときに、データベース サーバに より、子表内にあるその行 (外部キー) に関連するすべての行も削除されます。カスケード削除機能の主な利点は、削除操作を実行するために必要な SQL 文の量を減らせることです。
CREATE TABLE all_candy
(candy_num SERIAL PRIMARY KEY,
candy_maker CHAR(25));
CREATE TABLE hard_candy
(candy_num INT,
candy_flavor CHAR(20),
FOREIGN KEY (candy_num) REFERENCES all_candy
ON DELETE CASCADE);
ON DELETE CASCADE は従属表に対して指定されるため、all_candy 表の行が削除されると、hard_candy 表の行も削除されます。カスケード削除が設定された表から行を削除する場合の構文の制限とロックの実装につ いては、表にカスケード削除がある場合の考慮事項を参照してください。