参照整合性を設定できる条件は?
[リレーションシップ]ダイアログボックスで参照整合性を設定するには、2つのテーブルの結合フィールドが次の条件を満たさなければなりません。
- 少なくとも一方に主キーか[インデックス]プロパティで[はい(重複なし)]が設定されている
- データ型が同じ
- 数値型の場合はフィールドサイズが同じ
- 2つのテーブルが同じデータベース内にある
なお、オートナンバー型のフィールドと数値型のフィールドを結合する場合は、互いのフィールドサイズを長整数型にすることで参照整合性を設定できます。
参照整合性を設定すると何ができるの?
参照整合性とは、リレーションシップを作成した2つのテーブル間で、レコードの整合性を保つための仕組みです。レコードの整合性が保たれているということは、すべての子レコードに対して親レコードが存在するということです。
[リレーションシップ]ダイアログボックスで[参照整合性]をオンにしてリレーションシップを作成すると、レコードの整合性が保たれるように、Accessが次の3項目を自動管理してくれます。
多側テーブルの入力の制限
多側テーブルの結合フィールドに、一側テーブルにないデータ入力すると、エラーとなり、親レコードのない子レコードが発生することを防げます。
一側テーブルの更新の制限
多側テーブルと結合している一側テーブルの結合フィールドのデータを変更すると、エラーとなり、子レコードの親がなくなることを防げます。
一側テーブルの削除の制限
多側テーブルと結合している一側テーブルのレコードを削除しようとすると、エラーとなり、子レコードの親がなくなることを防げます。
「参照整合性を設定できません」というエラーが表示される
「このリレーションシップを作成して、参照整合性を設定できません。」と表示される場合、多側テーブルの結合フィールドに、一側テーブルに存在しないデータが入力されている可能性があります。多側テーブルの結合フィールドをチェックし、該当のデータを入力し直すか、未入力の状態にすれば、参照整合性を設定できます。
「ロックできませんでした」というエラーが表示される
テーブルが開いていると参照整合性の設定が行えず、「テーブル'(テーブル名)'は...ロックできませんでした。」というエラーメッセージが表示されます。テーブルを閉じてから設定しましょう。
テーブルが閉じているのにメッセージが表示される場合は、他のユーザーがテーブルをロックしている可能性があります。他のユーザーがテーブルを閉じるのを待ってから設定しましょう。