グループが次のようにモデル化されているデータベース アプリケーションがあります。
TABLE Group
(
group_id integer primary key,
group_owner_id integer
)
TABLE GroupItem
(
item_id integer primary key,
group_id integer,
group_owner_id integer,
Foreign Key (group_id, group_owner_id) references Group(group_id, group_owner_id)
)
を含む複数フィールドの外部キーを設定しました。これは、 が とは異なる所有者を持つことができないgroup_owner_id
ようにするためです。他の理由で (これについて詳しく説明する必要はないと思います)、group_owner_id をテーブルから削除されるため、単に削除することはできません。GroupItem
Group
GroupItem
私の大きな問題は、group_owner_id
グループ全体の を更新したい場合、次のようなコードを (疑似コードで) 書いていることです。
...
BeginTransaction();
BreakForeignKeys(group_items);
SetOwnerId(group, new_owner_id);
SaveGroup(group);
SetOwnerId(group_items, new_owner_id);
SetForeignKeys(group_items, group);
SaveGroupItems(group_items);
CommitTransaction()
...
これを回避する方法はありますか?少しぎこちないようです。うまくいけば、私は十分な詳細を投稿しました。
ありがとう。