2011-04-12 77 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