ルールの問題で見られるのは、ルールシステムがデータをアトミックに処理しないことです。最初の削除は、DOINSTEADルールの2つのステートメントの順序に関係なく実行されます。 OLD.idが参照する行がビューから削除されているため、2番目のステートメントは実行されません。 LEFT JOINを使用することもできますが、テーブルデザインの例があるため、役に立ちません(実際のデータベーススキーマで機能する場合があります)。
基本的な問題は、私が見ているように、ルールシステムをトリガーとして扱っていることです。
最善のオプションは、外部キーとON DELETE CASCADE
を使用することです。 ルールの代わりに。それらを使用すると、サンプルスキーマも機能します。すべての子を削除するには、親テーブルを削除するだけで済みます。