我正在尝试在 Access 2010 中创建一个表,该表不允许在两个字段中重复,但在其中一个字段中允许空值,前提是只有一个空值(所以没有重复值/ null)。
我的表格字段如下,ID
字段设置为主键,计划是不允许CostCode/TeamID
中的重复项,但TeamID
对于每个实例都可以为空CostCode
。
下面的图片显示,如果两个都有值,我就无法添加CostCode
和TeamID
两次,但我可以在{{1}中添加两次CostCode
Null值}}。
无论如何要实现这个目标吗? 我已经读过我可以给TeamID一个空字符串的默认值(或者0,因为它永远不会是TeamID)但是我想尽可能使用Null,因为这是空字符串或0代表的。
修改
在JJ32的评论和周末思考之后我将TeamID值放入一个单独的表中。
然后,我会在TeamID
和tbl_BranchDetail
之间加入一对多人加入,并且在tbl_CostCodes
和tbl_CostCodeM2MJoin
之间加入许多2加入。
这将删除在Many-2-Many表中出现的Null值,我的查询现在将读作:
tbl_Teams
答案 0 :(得分:0)
我不相信可以在唯一的复合索引中禁止重复的空值,因为没有两个Null被认为是相等的。
因此,在上面的示例中,您有三个唯一的行,一个是TBC / 1的组合,另外两个是TBC / null的组合。
遗憾的是,我知道的唯一答案是选择一些非空值来表示TeamID中的null,然后在应用程序中将结果显示为空。