对所有记录的几个字段进行唯一性检查?

时间:2014-06-05 18:44:46

标签: ms-access ms-access-2010

我是MS Access的新手,希望我的问题很简单,但我还没能通过Google搜索找到明确的答案。

我有一个带有表的简单数据库,并且有一个必须具有唯一内容的字段子集。我了解如何进行设置,以便所有记录中的特定字段必须是唯一的,但我需要所有记录中的几个字段才能拥有唯一的内容。

例如,在一个记录中,只有一个字段,跨越字段4 - 10,在所有记录中,可以具有数字' 1'在里面。如果' 1'在记录A的字段5中,它也不能在记录F的字段8中。

作为类比,假设我们正在构建计算机,每台计算机都有1或2个视频卡。在数据库中,一些字段存储安装在该插槽中的视频卡的序列号。显然,序列号是唯一的,并且相同的卡不能安装在两个插槽中,无论是在同一台计算机中,还是在两台不同的计算机中。我需要数据库来防止用户输入重复的序列号。在示例图像中,在不同记录的不同字段中存在相同序列号的副本。不应该允许这样做。 example

是否有内置方法来实现此类用户输入检查?如果没有,我该如何实施呢?

1 个答案:

答案 0 :(得分:2)

您需要一个唯一的复合索引。要做到这一点

  • 转到桌面上的设计视图
  • 打开Indexes编辑器窗口
  • 转到新行,输入新索引的名称,然后选择Field Name
  • 在“索引属性”窗格中,将Unique属性更改为Yes
  • 转到新行,不要输入索引名称,选择其他Field Name

完成

enter image description here

编辑:

真正的问题是您需要规范化数据。 Slot #1Slot #2不是真正的列。您需要像这样设置表格

enter image description here

并非我将所有三列都设为复合主键并且我将VideoCard列编入索引以不允许重复

然后,当您输入错误数据时,您会收到此消息 enter image description here 在输入好的数据之前,它不会让你提交。

如果您需要像原始示例一样呈现您的数据,那么您可以在交叉表查询中执行此操作 enter image description here

将产生这样的结果

enter image description here