不允许在 Access 2010 multi-column 索引中使用多个 Null 值

Not allowing multiple Null values in an Access 2010 multi-column Index

我正在尝试在 Access 2010 中创建一个 table,它不允许在两个字段中重复,但允许在其中一个提供的字段中为空值只是一个空值(因此 value/null 没有重复)。

我的 table 字段如下所示,ID 字段设置为主键,计划不允许 CostCode/TeamID 中出现重复,但 TeamID 可以CostCode.

的每个实例都为空一次

下图显示,如果 CostCodeTeamID 都有值,我不能添加两次,但我可以添加一个 CostCode 两次,其中 TeamID

有没有办法实现这个?
我读过我可以给 TeamID 一个空字符串的默认值(或 0,因为它永远不会是 TeamID)但我想尽可能使用 Null,因为这就是空字符串或 0 所代表的。

编辑:
在 JJ32 的评论和一个周末的思考之后,我将 TeamID 值放入一个单独的 table.
然后我会在 tbl_BranchDetailtbl_CostCodes 之间进行多对多连接,在 tbl_CostCodeM2MJointbl_Teams 之间进行多对多连接。

这将删除多对多 table 中出现的 Null 值,我的查询现在将显示为:

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 中的空值,然后在应用程序中将结果显示为空。