Access:1対多のリレーションシップを使った削除クエリの作成

主キーがあるレコードが削除できるクエリの作成手順です。

BackHome Backクエリ

前回、結合線で結ばれたクエリで削除した場合、主キーが含まれるフィールド側のレコードを削除することはできませんでした。

しかし、リレーションシップの「参照整合性」-「レコードの連鎖削除」を設定すると、1対多の主キーが含まれる1側のレコードを削除すると、多側のレコードも同時に削除することができるようになります。

結合線で結ばれた結合クエリを元に削除クエリを作成する」も掲載していますので参考にしてください。


リレーションシップを使った削除クエリの作成手順

■実行前の、多側のテーブルです。

商品IDフィールドで、商品マスターテーブルと結合されます。

多側ですので、商品IDには同じ番号が複数あります。

削除前の商品在庫テーブル

■リレーションシップを設定します。

リボンの「データベースツール」-「リレーションシップ」をクリックします。

リレーションシップの設定ボタン

「テーブルの表示」をクリックします。

テーブルの表示ボタン

結合するテーブルを選択します。

ここでは、商品マスターと商品在庫を選択しました。

テーブル一覧ダイアログボックス

商品マスターの商品IDをドラッグし、商品在庫の商品IDにドロップします。

すると、リレーションシップダイアログボックスが表示されるので、「参照整合性」と「レコードの連鎖削除」のチェックをONにします。

リレーションシップの整合性の設定

これでリレーションシップの結合が完了しました。

結合線には「1」と「∞(多側)」のマークが表示されています。

リレーションが完成

■削除クエリを作成します。

リボンの「作成」「クエリデザイン」をクリックします。

クエリの作成

削除クエリを作成するテーブルを選択します。

ここでは、1側の商品マスターを選択します。

テーブルの選択

  1. 商品マスターのアスタリスク(*)フィールドと商品カテゴリをデザイングリッドに追加します。
  2. リボンのクエリツール デザインのクエリの種類から削除ボタンをクリックします。
    アスタリスクフィールドに From 、商品カテゴリに Where が自動的に表示されます。
  3. 抽出条件に、"パン" と入力します。
    これで、商品カテゴリがパンのレコードと、多側のパンに結合されている全レコードが削除されるはずです。
  4. 実行ボタンをクリックします。
削除クエリの作成

4の実行ボタンをクリックすると、「○件のレコードが指定したテーブルから削除されます。」とメッセージが表示されます。

削除前の警告メッセージ

多側の商品在庫テーブルです。

元あった、商品IDが20と23のレコードが削除されました。

削除された商品在庫テーブル

このようにリレーションシップで設定した1側のレコードを削除すると、多側のレコードも一気に削除できるので、整合性がなくなることはなくなります。


BackHome Backクエリ

Copyright(C) FeedSoft