我有一个数据库应用程序,其中的组建模如下:
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
因为我们要确保GroupItem
不能有与Group
由于其他原因(我认为我不需要详细说明这一点),无法从 group_owner_id 中删除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()
...
有办法解决这个问题吗?看起来有点笨拙。希望我已经发布了足够的细节。
Thanks.
SQL Server 不支持 UPDATE CASCADE 吗? :-
Foreign Key (group_id, group_owner_id)
references Group(group_id, group_owner_id)
ON UPDATE CASCADE
然后,您只需更新 Group 表的 group_owner_id 即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)