不允许多个空值在Access 2010多列索引中
问题描述:
我试图在Access 2010中创建表,它不允许在两个字段中有重复项,但会允许在其中一个字段中提供空值只有一个空值(所以没有重复的值/ null)。不允许多个空值在Access 2010多列索引中
我的表字段如下与ID
字段设置为一个主键,该计划是不允许在CostCode/TeamID
重复,但TeamID
可以为CostCode
的每个实例为Null一次。
下图显示的是我不能添加一个CostCode
和TeamID
两次,如果它们都具有价值,但我可以在TeamID
空值添加CostCode
两次。
反正有没有做到这一点?
我读过我可以给TeamID一个空字符串的默认值(或0,因为这永远不会是一个TeamID),但我想使用空,如果可能的话,因为这是空字符串或0将代表。
编辑:
从JJ32的评论和周末想通过我已经把TeamID值到一个单独的表走了以后。
然后,我会在tbl_BranchDetail
和tbl_CostCodes
之间以及tbl_CostCodeM2MJoin
和tbl_Teams
之间的多 - 2 - 多联接。
这将从要么许多-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中的空值,然后在应用程序中将结果显示为空。
感谢您的回复JJ32。我希望它不会是这样的。我重新思考了周末,我将把TeamID分成一个单独的表格。目前'tbl_CostCodes'表中有一个M:M连接和一个'tbl_BranchDetail'表。有些分支有多个成本代码(这是TeamID的来源),一些成本代码覆盖多个分支。所以我得到了一个表'BranchID'和'CostCodeID'来实现表格之间的M:M链接..如果我创建另一个链接团队到分支和费用代码,它应该工作......我想。 –