MS Access Tips/Sample and VBA and Blog customize etc...

3つ以上のテーブルを含むクエリは更新不可なのか?

掲示板での質疑応答で、3つ以上のテーブルを含むクエリは更新できないと思いこんでいる質問者が、たまにいます。

下図はAccess2003のヘルプのキャプチャーです。

更新不可クエリのヘルプ

同様の内容がAccessClubの下記のページにもあります。

クエリからのデータ更新について:AccessTips030

多対一リレーションシップが設定された 3 つ以上のテーブルを基にするクエリ 更新不可

「多対一リレーションシップ」と言う言い方はあまり見かけません。普通は「一対多リレーションシップ」といいます。これが同じ意味だとしたら、テーブル間の関係はたいていは一対多ですので、3つ以上のテーブルが含まれていたら更新てきないという結論になります。

このような記述が3つ以上のテーブルを含むクエリはすべて更新できない、というような誤解を生む原因になっていると思われます。

しかし、実際は、テーブルが3つ以上でも更新できるクエリを使用なさっている方は多くいると思いますし、私自身も3つどころかそれ以上テーブルを含むクエリで問題なく更新できています。

もちろん設計によっては更新できなくなることはありますが、これは2つだけのクエリでも同じ事です。

ということで、ヘルプの記述が間違っているのではないかと思い、Access2007のヘルプを見てみたら、記述が変わっていました。

クエリのデータを編集する - Access - Office.com

Access2007のヘルプ

上記のヘルプには、編集できないクエリとして、下記のように記述されています。

3 つ以上のテーブルを基にしたクエリで、多対一対多リレーションシップがある場合。

「多対一」ではなく、「多対一対多」となっています。Access2003のヘルプは原文から翻訳するときに「対多」が抜け落ちたのかもしれませんね。

「多対一対多リレーションシップ」とは下図のような結合の場合ですね。これは確かに更新できません。

多対一対多のクエリ

しかし、通常はこのような結合が必要なシチュエーションに私自身は出会ったことはないです。

よく現れるのは下図のような結合ですね。これなら、一側のフィールドが主キーか重複なしのインデックスが設定されていれば問題なく更新できます。

更新可能なクエリ

更新可能なクエリ

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/344-b4114ce6
該当の記事は見つかりませんでした。