電子書籍の厳選無料作品が豊富!

ダイナセットタイプのレコードセットオブジェクトの作成時、
引数にdbInconsistentという定数を使用できるようなのですが、

(例)Set rs = db.OpenRecordset("テーブル名", dbOpenDynaset, dbInconsistent)

dbInconsistentの説明として参考URLのところで
「矛盾を含んでいる場合でもレコードセットの更新が可能になります。
テーブル間のリレーション関係に矛盾が生じる場合でも、
それぞれそのテーブルデータを更新します。」

というようにかかれていました。この
「矛盾を含んでいる場合」
「テーブル間のリレーション関係に矛盾が生じる場合」
とはどういう場合なのかよく分からないのですが
具体的にどういう場合をいうのでしょうか?
ご存知の方いましたらよろしくお願い致します。

参考URL)http://www.accessclub.jp/dao/07.html

A 回答 (1件)

dbInconsistentとは逆の、dbConsistentについて考えると分かりやすいと思います。


参考URLにも書いてありますが、
dbConsistentは「Accessの参照整合性に従って制御が掛かる」とありますね。

つまり、「矛盾を含んでいる場合」とは「参照整合性に反する場合」と言い換えることができます。

参照整合性とは、例えば

顧客マスタ(顧客ID,顧客名・・・)
明細テーブル(明細番号,顧客ID,・・・)

の2つのテーブルがあり、明細テーブルは顧客マスタの顧客ID(顧客マスタの主キー)を外部キーとして参照しているとします。

この場合、明細テーブルを更新するときに、明細テーブルの顧客IDは顧客マスタに存在するものでなければなりません。
これが参照整合性です。

「テーブル間のリレーション関係に矛盾が生じる場合」というのは、このケースであれば

明細テーブルの顧客IDに、顧客マスタに無い顧客IDが入っている
(例)顧客マスタの顧客IDは001~100までなのに、明細テーブルの、あるレコードの顧客IDが200になっている

という場合になります。

dbInconsistentはこういった矛盾を無視して更新を掛けられるオプション・・・ということになりますね。
    • good
    • 0
この回答へのお礼

丁寧に説明して頂きありがとうございました!
大変分かりやすかったです。
おかげですっきりしました(^^)

お礼日時:2005/09/08 08:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!