2011-04-12 86 views
8

我还没有找到任何有关我的问题的答案,所有的唯一约束问题都没有涉及MS Access。Access 2003中多个字段的唯一约束

问题是如何对MS Access 2003数据库中的多堆字段进行唯一约束?

如果我的表格由列id, A, B, C, D, E, F组成。我在列id上有一个索引,但我想要在列AB上设置唯一的约束。因此,如果列B中的值不同,我可能在列A中有重复的值。

我想强调,我的解决办法不感兴趣与连接值从列AB创建新列,并创建该列的约束。在Access

ALTER TABLE MyTable ADD 
    CONSTRAINT MyTable__key 
     UNIQUE (A, B); 

使用VBA:如果您想通过UI做的,在设计视图中打开表

CurrentProject.Connection.Execute _ 
    "ALTER TABLE MyTable ADD CONSTRAINT MyTable__key UNIQUE (A, B);" 

回答

19

+2

谢谢,效果很好。 – 2011-04-13 08:50:16

+0

谢谢队友。很好的帮助。 – 2017-08-03 21:19:19

6

ANSI-92 Query Mode,执行该SQL DDL。打开索引窗口。输入新的索引名称,标识列A,将索引标记为唯一。然后在该下面添加第二行,不要在该行上指定索引名称,并标识列B.关闭索引窗口并保存表格。

您现在在列A和列B上具有唯一索引。我上的一个&乙唯一索引这里叫做鲍里斯:

enter image description here

+2

它的伟大工程,所以我upvoted你的答案。但是我会接受@Damien_The_Unbeliever的答案,它给出与您的解决方案完全相同的结果,因为他给出了明确的Access解决方案。将来它可能对其他不了解SQL并希望使用Access的人更有帮助。再次感谢您的时间。 – 2011-04-13 08:49:55

+1

@MPękalski:嗯 - SQL DDL是标准SQL,所以应该在任何* SQL产品上工作,而VBA是“明确的Access解决方案”,它不适用于任何SQL产品,而只能访问Access。那么,我不是给你两全其美的吗? ;) – onedaywhen 2011-04-13 09:32:28

+2

是的,我知道它的工作原理。但是如果你考虑一个普通的Access用户,那么我会争辩说他对SQL的了解不多。至少在我工作的公司里。也许我应该强调,GUI解决方案将是最适合的解决方案。 ;) – 2011-04-13 09:38:49