不允许多个空值在Access 2010多列索引中

问题描述:

我试图在Access 2010中创建表,它不允许在两个字段中有重复项,但会允许在其中一个字段中提供空值只有一个空值(所以没有重复的值/ null)。不允许多个空值在Access 2010多列索引中

我的表字段如下与ID字段设置为一个主键,该计划是不允许在CostCode/TeamID重复,但TeamID可以为CostCode的每个实例为Null一次。

Index Set Up

下图显示的是我不能添加一个CostCodeTeamID两次,如果它们都具有价值,但我可以在TeamID空值添加CostCode两次。

enter image description here

反正有没有做到这一点?
我读过我可以给TeamID一个空字符串的默认值(或0,因为这永远不会是一个TeamID),但我想使用空,如果可能的话,因为这是空字符串或0将代表。

编辑:
从JJ32的评论和周末想通过我已经把TeamID值到一个单独的表走了以后。
然后,我会在tbl_BranchDetailtbl_CostCodes之间以及tbl_CostCodeM2MJointbl_Teams之间的多 - 2 - 多联接。

enter image description here

这将从要么许多-2-许多表发生删除空值和我的查询现在读作:

SELECT  M2M.BranchID 
      ,M2M.CostCodeID 
      ,TM2M.TeamID 
      ,CC.CostCode 
      ,TM.TeamName 
FROM  ((tbl_CostCodes CC INNER JOIN tbl_CostCodeM2MJoin M2M ON CC.ID = M2M.CostCodeID) 
           LEFT JOIN tbl_CostCodeToTeamM2MJoin TM2M ON (M2M.BranchID = TM2M.BranchID AND 
                      M2M.CostCodeID = TM2M.CostCodeID)) 
           LEFT JOIN tbl_Teams TM ON TM2M.TeamID = TM.ID  

我不相信这是可能不允许重复因为没有两个空值被认为是相等的,所以在独特的综合索引中空值。

因此,在上面的示例中,您将有三个唯一行,一个是TBC/1和两个TBC/null的组合。

不幸的是,我唯一知道的答案是选择一些非空值来表示TeamID中的空值,然后在应用程序中将结果显示为空。

+0

感谢您的回复JJ32。我希望它不会是这样的。我重新思考了周末,我将把TeamID分成一个单独的表格。目前'tbl_CostCodes'表中有一个M:M连接和一个'tbl_BranchDetail'表。有些分支有多个成本代码(这是TeamID的来源),一些成本代码覆盖多个分支。所以我得到了一个表'BranchID'和'CostCodeID'来实现表格之间的M:M链接..如果我创建另一个链接团队到分支和费用代码,它应该工作......我想。 –