小编Mar*_*n F的帖子

如何允许键的一部分为空并强制使用空值的记录的唯一性?

我有一个Engagement带有四个字段的 Access 表:

Emp_id, Year, Week, Act_id
Run Code Online (Sandbox Code Playgroud)

它记录员工何时/曾参与某项活动。每个字段都是数字,每个字段都构成复合主键的一部分。应用程序的语义是每个条目(每个Emp_id- Year- Week-Act_id组合)必须是唯一的。也就是说,虽然员工通常会有不同的年周和不同的活动,但员工有时可以在不同的年周从事相同的活动,甚至可以在同一年的周从事不同的活动。不允许有空值。一切正常。

现在我需要扩展/修改语义以允许与任何给定员工活动相关的未知——或更恰当地说,未披露——年-周值。当然,尝试输入带有空的 Year-Week 的行会导致“索引或主键不能包含 Null 值”。所以我需要改变表格设计。

我尝试过的一件事是通过在“索引”窗口中关闭“主”(并保持“唯一”状态)将主键索引转换为非主索引。这正确地防止了年-周值非空的重复记录——但它允许年-周为空的重复记录。

例如,使用上述非主、唯一索引,允许以下数据:

Emp_id  Year  Week  Act_id
     7  2014    12      31  } Same activity,
     7  2015    22      31  } different dates.
     7  2015    33      32
     7  2015    40      33  } Same dates,
     7  2015    40      34  } different activities.
     7  2016     2      36
     7                  38  } Different activities,
     7                  39  } undisclosed dates.
Run Code Online (Sandbox Code Playgroud)

随后不允许添加以下任何内容:

Emp_id …
Run Code Online (Sandbox Code Playgroud)

null ms-access primary-key unique-constraint

4
推荐指数
1
解决办法
2082
查看次数

标签 统计

ms-access ×1

null ×1

primary-key ×1

unique-constraint ×1