2010-08-25 34 views
1

我已經創建了一個C#應用程序,它可以從MS Access數據庫創建一個克隆副本,並將數據遷移到另一個數據庫服務器,但這需要更改主鍵。父表格鍵更改時,維護對子表格的參照完整性的最佳方法是什麼?父母表鍵被更改時如何保持參照完整性?

感謝,

安德魯

回答

3

你可能已經知道這一點,但你的主鍵列值不應該被改變,很多,如果在所有。但是,除此之外,你沒有提到你正在使用的數據庫。但對於SQL Server,您可以設置FK來執行所謂的級聯更新。這意味着如果一個PK值發生變化,子表中的所有FK行也會改變。

以下是說明該文章:http://blogs.techrepublic.com.com/datacenter/?p=128

0

我假設你有自動增量設置上的Access表的PK場的數據類型,並要在新的數據庫等同的功能。

使用數字而非自動增量數據類型將Access表導入到目標表中。然後在父表和子表之間添加你的RI。然後編輯您的PK字段以自動遞增。

0

我確實最終使用了複合主鍵,因爲每次應用程序創建克隆副本時,它都是整個數據集的「快照」。因此,我添加了一個名爲「修訂版」的專欄,並將每個表的主鍵設置爲Pk = OID + REVISION。

對於子表,它應該通過它們的主鍵引用父表,這意味着外鍵也將是複合的。你如何在Access中實現這種關係?我所做的是在Access 2007中轉到「數據庫工具」 - >「關係」,並在那裏編輯關係,使其顯示以下內容:

(父Oid)1 < ---許多(子父鍵), (母版)1 < ---很多(孩子版本)

請告訴我是這樣做的。或者如果有人可以告訴我如何使用SQL命令來實現這一點,我也會嘗試。

謝謝,