我有其中一組是仿照這樣的數據庫應用程序:更新外鍵值
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
不能有與其所有者不同。由於其他原因(我認爲我不需要詳細說明),無法從GroupItem
表中刪除group_owner_id,因此只是刪除它不是一個選項。
我的大問題是,如果我要更新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()
...
有沒有辦法解決這樣做呢?看起來有點笨重。希望我已經發布了足夠的細節。
謝謝。
+1雖然Group是保留關鍵字,但不能成爲表名 – Andomar 2009-11-03 23:49:34