2013-01-21 70 views
0

Microsoft Access數據庫中有兩個表。其中一個定義元素,另一個引用它們。然而這個參考是可選的。該值可以是NULL。只要外鍵存在,我不允許插入或更新NULL值。保存沒有外鍵的NULL值後,我無法添加密鑰。帶有不允許NULL值的參照完整性的MS Access

引用列設置爲「必需= false」,並且允許NULL值自行使用。只有參照完整性不能處理NULL值。

這怎麼解決?

更新:一些可能相關的東西出現在我的腦海裏:我的外鍵使用兩列。其中一個始終設置,但另一個可以爲空。

新增樣本模式:

表總線:
列:
•ObjID的整數
•busnumber整數
•名VARCHAR
主鍵:ObjID中busnumber

表康恩:
列:
•的objid整數
•名稱VARCHAR
•BUS1整數
•BUS2整數
主鍵:的objid,名稱

康恩(的objid,BUS1)的引用到總線(的objid,busnumber),爲1:n的和
康恩(的objid,BUS2)被引用到總線(的objid,busnumber),爲1:n的

兩篇參考文獻是可選的,但objid是上級對象的一部分,並且總是被設置。

+0

請後兩個表指示哪些列用作索引和外鍵的樣本數據。當然,你有一個組合鍵是相關的。 – Fionnuala

+0

@Remou:我在上面添加了一個示例模式描述。 – ygoe

+0

varchar?您正在使用MS Access(Jet/ACE)後端還是SQL Server? – Fionnuala

回答

1

在所示的示例設置中,很有可能將null編輯爲現有元素並用空值創建記錄。我懷疑你可能有些東西設置不正確。

relationship with nulls

+1

好吧,但它只適用於單列引用或多列,但也許它們都需要爲空,而不僅僅是其中一些。 – ygoe

+0

是的,您可以爲FK全部爲空或全部完成,但在使用參照完整性時不能混用。你可以創建一個自動編號並使用它。 – Fionnuala

+0

在使用「忽略空值」索引屬性,「唯一」屬性以及主表和外表中的不同索引組合進行多次嘗試之後,我無法使其與多列鍵一起工作。有一次,我認爲我已經工作,甚至提交了答案,但我忘記重新啓用參照完整性約束。最後,我得出與LonelyPixel相同的結論,Access不支持可空,**多列**關係,同時仍然強制執行參照完整性。 –