SQLAlchemy を使用して、ユーザーが複数のグループを持つことができ、グループが複数のユーザーを持つことができる基本的なユーザー グループ モデルを実装しようとしています。
グループが空になったら、グループを削除したいと思います (グループに関連する他のものと一緒に。幸いなことに、SQLAlchemy のカスケードは、これらのより単純な状況でうまく機能します)。
問題は、 cascade='all, delete-orphan' が私が望んでいることを正確に実行しないことです。グループが空になったときにグループを削除するのではなく、メンバーがグループを離れたときにグループを削除します。
データベースにトリガーを追加すると、グループが空になったときにグループを削除するのに問題なく機能しますが、トリガーは SQLAlchemy のカスケード処理をバイパスしているように見えるため、グループに関連付けられているものは削除されません。
グループのすべてのメンバーが脱退し、この削除が関連するエンティティにカスケードされるときにグループを削除する最善の方法は何ですか?
ユーザーがグループを離れることができるコード内のすべての場所を見つけて、トリガーと同じことを行うことで、これを手動で行うことができることを理解していますが、コード内の場所を見逃すのではないかと心配しています (そして私は怠惰)。