Accessのテーブルでは、[主キー](シュキー)を設定することができます。[主キー]とは、各レコードを固有のものとして識別するフィールドのことです。
英語では[primary key]と呼ばれるものです。
[主キー]を設定すると、他のテーブルと関連付けして他のテーブルの内容を参照したりできるようになりますし、検索や並べ替え、レコードの抽出が高速になります。
[主キー]は絶対設定しなければならないものではありませんが、Accessの機能を十分に活用するためには設定されることをお勧めします。
参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
この記事の目次
[主キー]とは
[主キー]とは各レコードを固有のものとして識別するフィールドのことです。
[主キー]とするフィールドには、条件があります。
- レコードが重複していない
- 空白のレコードがない
例えば、以下のようなテーブルがあるとします。
フィールドとは、列となっている項目のことです。同じ名前の項目は設定できません。
レコードは、1個のデータのことです。
この場合、[伝票番号]は重複することなく固有の値になりますので、[主キー]に設定できます。
[主キー]を設定するには
[主キー]を設定するには、まず、テーブルをデザインビューで開きます。
テーブルを[デザインビュー]で開く
[ホーム]タブの[表示]グループの[表示]から[デザインビュー]をクリックします。
テーブルは、[データシートビュー]と[デザインビュー]があり、テーブルの構造は[デザインビュー]で行い、データの入力や表示は[データシートビュー]で行います。
また、テーブルのタイトルバーで右クリックして、ショートカットメニューからも選択できます。
テーブルをデータシートビューで開いていない状態であれば、ナビゲーションウィンドウのテーブルで右クリックしてもできます。
[主キー]の設定
ここでは、テーブル[T_売上伝票]の[伝票№]フィールドに[主キー]を設定します。
[伝票№]フィールドの行セレクタをポイントすると、マウスポインターが右向きの黒い矢印に変わりますので、その時にクリックして選択します。
[デザイン]タブの[ツール]グループにある[主キー]ボタンをクリックします。
[伝票№]の行セレクターにキーインジゲーター(鍵マーク)が表示されます。これで[主キー]が設定されたことになります。
参考[主キー]を設定するには、以下の方法もあります。
フィールドの行セレクターで右クリックして、ショートカットメニューの[主キー]をクリックします。
行セレクター以外の箇所でも、そのフィールド内であれば、右クリックで設定できます。
参考Access でテーブルの主キーを追加または変更する - Microsoft サポート(Microsoft)
[主キー]の設定後に保存するときにメッセージが表示される
[主キー]の設定をして、テーブルを閉じようとすると、以下のメッセージウィンドウが表示されることがあります。
インデックス、主キー、またはリレーションシップで重複する値が生成されるため、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。
[主キー]にしたいフィールドで[主キー]の設定ができない場合は、フィールド内に重複した値がないかなどをチェックしてみてください。
参考レコードが多い場合は、Excelにエクスポートして重複のチェックなどを行うと早く見つけることができると思います。
-
Excelへ出力(エクスポート)するコマンドボタンの作成
Access2010でテーブルやクエリをExcelへ出力するマクロを作成して、それをコマンドボタンに登録する方法です。 独立マクロを作成して ...
-
[重複の削除]は1番目の値が残るがデータの空白スペースには注意
Excel2007以降には、[データ]タブの[データツール]グループに[重複の削除]というコマンドがあります。 ポップヒントには、以下のよう ...
[主キー]の解除
[主キー]を設定したあと、解除する場合は、[主キー]が設定されたフィールドを選択して[主キー]のボタンをクリックします。
もちろん、フィールドを選択して右クリックのショートカットメニューから[主キー]をクリックしても解除できます。
[主キー]を設定した行を削除すると、自動的に[主キー]も解除されます。
[主キー]を設定できるフィールドがない
もし、テーブルに[主キー]を設定できるフィールドがない場合は、[データ型]で[オートナンバー型]を選択すると、自動的に固有の値になるので[主キー]を設定できます。
[デザイン]タブの[ツール]グループにある[行の挿入]をクリックして、先頭に新しい行を追加します。
フィールド名を入力して、[データ型]で[オートナンバー型]を選択します。[主キー]の設定をします。
参考フィールドの[データ型]の種類については、以下の記事で解説しています。
-
テーブル(フィールド)のデータ型の種類とフィールドプロパティ
文字とか数値といったデータの種類のことをデータ型と呼びます。 Accessでは、フィールドごとにデータ型が決まっていて、同じデータ型のデータ ...
複数フィールドに[主キー]を設定
テーブル内に主キーにできるフィールドがない場合でも、2つのフィールドを組み合わせて[主キー]を設定することもできます。
例えば、以下のように[企業ID]と[支店]フィールドには、重複値がありますが、[企業ID]フィールドと[支店]の組み合わせは1つしかありません。
こういう場合は、[企業ID]と[支店]の両方に[主キー]の設定をしておくと、重複を防ぐことができます。
[Ctrl]キーを使って主キーを設定したフィールドを複数選択して、[主キー]をクリックします。
[主キーが設定されていません]のメッセージが表示された場合
新規テーブルを作成したときに、[主キー]の設定をしないで保存しようとすると、以下のメッセージウィンドウが表示されます。
主キーが設定されていません。
テーブルに格納されているレコードを一意に識別するため、主キーを設定することをお勧めします。他のテーブルとのリレーションシップを設定する場合は、主キーを設定する必要があります。主キーを設定しますか?
[はい]を選択した場合
このメッセージウィンドウで、[はい]をクリックすると、自動的に[ID]という名前のフィールドが追加されます。データ型は[オートナンバー型]となります。
テーブルに[オートナンバー型]のフィールドがあった場合は、自動的にそのフィールドに[主キー]が設定されます。
[いいえ]を選択した場合
[主キー]を設定しないまま、テーブルは保存されます。
後で自分で設定するつもり、もしくは[主キー]を設定しない場合は、[いいえ]を選択します。
[主キー]は、必ず設定しなければならないものではありません。
ですが、他のテーブルとリレーションの設定(関連付け)をしたりする場合は、[主キー]の設定は必要になります。
参考[主キー]を設定している場合は、データシートビューに[クリックして追加]というフィールドが表示されますが、[主キー]を設定していない場合は表示されません。
以下の記事で解説しています。
-
データシートビューに[クリックして追加]が表示されないようにしたい
Accessのテーブルをデータシートビューで表示すると、最後のフィールドに[クリックして追加]と表示されます。これは、データシートビューでも ...
[主キー]を設定をすると、リレーションシップの設定もできるようになります。
-
リレーションシップの作成と参照整合性の設定
Accessでは、複数のテーブルがあって、そのテーブル間の共通フィールドを関連付けることができます。この関連付けのことを[リレーションシップ ...