インデックスを使用してテーブル フィールドの値の重複を禁止する

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

一意のインデックスを作成することで、Access テーブルのフィールドに重複した値が存在しないようにすることができます。 固有インデックスとは、インデックスを付けたフィールドの各値が固有であることが必要なインデックスです。

一意のインデックスを作成するには、基本的に 2 つの方法があります。

  • フィールドの [インデックス] プロパティを [はい (重複なし)] に設定します これを行うには、テーブルをデザイン ビューで開きます。 この方法は簡単で、一度に 1 つのフィールドのみを変更したい場合に適しています。
  • 一意なインデックスを作成するデータ定義クエリを作成する これを行うには、SQL ビューを使用します。 この方法は、デザイン ビューを使用するほど簡単ではありませんが、データ定義クエリを保存して後でもう一度使用できるという利点があります。 これは、テーブルを定期的に削除および再作成し、一部のフィールドで一意のインデックスを使用する場合に役立ちます。

目的に合ったトピックをクリックしてください

フィールドの [インデックス付き] プロパティを [はい (重複なし)] に設定する

  1. ナビゲーション ウィンドウで、このフィールドを含むテーブルを右クリックし、[ デザイン ビュー] をクリックします。

  2. 一意の値を持つことを確認するフィールドを選択します。

  3. テーブル デザイン ビューの下部にある [フィールド プロパティ] ウィンドウの [ 全般 ] タブで、[ インデックス] プロパティを [はい (重複なし)] に設定します。

  4. テーブルへの変更を保存します。

    テーブル レコードのフィールドに既に重複が存在する場合、テーブルの変更を新しいインデックスで保存しようとすると、エラー メッセージ (エラー 3022) が表示されます。 新しい一意のインデックスを設定して保存する前に、テーブル レコードからこれらの重複するフィールド値を削除する必要があります。

データ定義クエリを使用してフィールドの固有インデックスを作成する

  1. [作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。

  2. クエリの [ デザイン ] タブの [結果 ] グループで、[ 表示] の下の矢印をクリックし、[ SQL ビュー] をクリックします。

  3. クエリから既存のすべての SQL を削除します。 (Access では、既存のテキストを削除する前に 、SELECT のみが表示される可能性があります)。

  4. クエリに次の SQL を入力するか貼り付けます。

    CREATE UNIQUE INDEX index_name
     ON table (field);
    
    
  5. SQL で、変数を次のように置き換えます。

    • index_name をインデックスの名前に置き換えます。 インデックスの目的を判別しやすい名前にすることをお勧めします。 たとえば、電話番号が一意であることを確認するためのインデックスの場合は、unique_phone という名前を付けます。
    • table を、インデックスを作成するフィールドが含まれているテーブルの名前に置き換えます。 テーブル名にスペースまたは特殊文字が含まれている場合は、名前を角かっこで囲む必要があります。
    • フィールドをインデックスを作成するフィールドの名前に置き換えます。 フィールド名にスペースまたは特殊文字が含まれている場合は、角かっこで囲む必要があります。
  6. クエリを保存して閉じます。

  7. クエリを実行してインデックスを作成します。 RunSQL マクロアクションを使用して、マクロからクエリを実行できることに注意してください。

ページの先頭へ