DELETE CASCADE
外部キー制約の属性です。残念ながら、それはステートメントのオプションとして使用できるものではありませDELETE
ん(実際には本当にクールです)
外部キーがカスケードとして宣言されていない場合は、「上に進む」必要があります。
残念ながら、実際のテーブル構造を表示しなかったので、次のようなものを想定しましょう。
main_table(main_id)
child_one(id、main_id)
child_two(id、id_one)
child_three(id、id_two)
(8つのテーブルを言ったのは知っていますが、デモンストレーションのために少し短くしましたが、基本的な「戦略」は変わりません)
main_id = 42
`main_tableから行を削除したいとします。
まず、次のようなものを使用して、child_threeから行を削除する必要があります。
delete from child_three
where id_two in (select id
from child_two
where id_one in (select id
from child_one
where main_id = 42);
次に、child_twoから行を削除します。
delete from child_two
where id_one in (select id
from child_one
where main_id = 42);
次にchild_one:
delete from child_one
where main_id = 42;
そして最後にメインテーブル:
delete from main_table
where id = 42;
一部のSQLクライアントは、実際にこれらのステートメントを生成できます。SQLDeveloperができるかどうかはわかりません。