我们可以在MS访问数据库上创建多列唯一索引吗?

Nic*_*ton 29 ms-access database-design

我们希望使用多列唯一索引来防止MS访问数据库中的记录重复.由于数据的发送方式(通过网络),有时会收到重复数据.数据源不发送唯一ID,因此最简单的选项是防止插入重复记录.

根据独特指数设计指南:

使用多列唯一索引,索引可确保索引键中每个值组合都是唯一的.例如,如果在LastName,FirstName和MiddleName列的组合上创建唯一索引,则表中的任何两行都不能具有这些列的相同值组合.

这是针对SQL 2005的,所以我不确定是否可以使用MS访问.

我想另一种方法是使用查询(伪代码):

insert into foobar (a, b, c) values ('x', 'y', 'z')
where (a <> 'x') and (b <> 'y') and (c <> 'z')
Run Code Online (Sandbox Code Playgroud)

...但我觉得索引会更好.

Nic*_*ton 47

事实证明,您可以在MS访问数据库上创建多列唯一索引,但如果您想通过GUI执行此操作,则会有点疯狂.还有一个限制; 每个索引只能使用10列.

无论如何,这是在MS访问数据库上创建多列唯一索引的方法.

  1. 在设计模式下打开表格,然后选择设计,选择索引.
  2. 创建一个新行并在" 索引名称"单元格中输入一个值,
  3. 从下拉菜单中选择第一列.
  4. 添加新行并将"索引名称"单元格留空.
  5. 选择第二列,依此类推.

这是它应该是什么样子:

MS访问中的多列索引


Fio*_*ala 8

在MS Access的设计视图中打开表,选择要在唯一索引中创建的三列,然后单击工具栏上的小键.主键(set)中不能包含空值.

  • 这个答案是对的.但是有人应该告诉尼克,他真正想要的是一个独特的CONSTRAINT,而不是一个独特的索引.如果他创建了一个多列PK约束,他将获得一个多列唯一索引.但索引只是一个工具.他正在寻找的逻辑特征是约束. (3认同)