参照整合性を設定できる条件は?

[リレーションシップ]ダイアログボックスで参照整合性を設定するには、2つのテーブルの結合フィールドが次の条件を満たさなければなりません。

  • 少なくとも一方に主キーか[インデックス]プロパティで[はい(重複なし)]が設定されている
  • データ型が同じ
  • 数値型の場合はフィールドサイズが同じ
  • 2つのテーブルが同じデータベース内にある

なお、オートナンバー型のフィールドと数値型のフィールドを結合する場合は、互いのフィールドサイズを長整数型にすることで参照整合性を設定できます。

参照整合性を設定すると何ができるの?

参照整合性とは、リレーションシップを作成した2つのテーブル間で、レコードの整合性を保つための仕組みです。レコードの整合性が保たれているということは、すべての子レコードに対して親レコードが存在するということです。

[リレーションシップ]ダイアログボックスで[参照整合性]をオンにしてリレーションシップを作成すると、レコードの整合性が保たれるように、Accessが次の3項目を自動管理してくれます。

多側テーブルの入力の制限

多側テーブルの結合フィールドに、一側テーブルにないデータ入力すると、エラーとなり、親レコードのない子レコードが発生することを防げます。

一側テーブルの更新の制限

多側テーブルと結合している一側テーブルの結合フィールドのデータを変更すると、エラーとなり、子レコードの親がなくなることを防げます。

一側テーブルの削除の制限

多側テーブルと結合している一側テーブルのレコードを削除しようとすると、エラーとなり、子レコードの親がなくなることを防げます。

「参照整合性を設定できません」というエラーが表示される

「このリレーションシップを作成して、参照整合性を設定できません。」と表示される場合、多側テーブルの結合フィールドに、一側テーブルに存在しないデータが入力されている可能性があります。多側テーブルの結合フィールドをチェックし、該当のデータを入力し直すか、未入力の状態にすれば、参照整合性を設定できます。

「ロックできませんでした」というエラーが表示される

テーブルが開いていると参照整合性の設定が行えず、「テーブル'(テーブル名)'は...ロックできませんでした。」というエラーメッセージが表示されます。テーブルを閉じてから設定しましょう。

テーブルが閉じているのにメッセージが表示される場合は、他のユーザーがテーブルをロックしている可能性があります。他のユーザーがテーブルを閉じるのを待ってから設定しましょう。

関連まとめ記事