• ベストアンサー
  • 暇なときにでも

リレーションシップ

テーブルAとテーブルBでリレーションシップを組んでいて 紐づいてる値をどちらとも同じ変更したいのですが、 テーブルAの値を変更しようとすると、 テーブル’テーブルB’にリレーションシップが設定されたレコードが必要なので、 レコードの追加や変更を行うことはできません。 と表示され、 だったら先に、テーブルBの値を変更しようとすると、 テーブル’テーブルA’にリレーションシップが設定されたレコードが必要なので、 レコードの追加や変更を行うことはできません。 となってしまいます。 どちらも同じ値に変更したいのですが、どうすればよろしいでしょうか? テーブルAとテーブルBは一対多で参照整合性にチェックがついて紐づいています。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数953
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

「フィールドの連鎖更新」にチェックを入れておけば 1:多 の1側(テーブルA)の変更ができるようになります。 それに追随してテーブルBが変更されます。 テーブル設計にも関連しますが、↓はよく読んでおかれることをお勧めします。 テーブルのリレーションシップの概要 http://office.microsoft.com/ja-jp/access-help/HA010120534.aspx

共感・感謝の気持ちを伝えよう!

質問者からのお礼

「フィールドの連鎖更新」 とはこのための機能なのですね。

関連するQ&A

  • このリレーションシップを作成して、参照整合性を設定

     Access2007で、このリレーションシップを作成して、参照整合性を設定できません。   手っ取り早いので、問題にAccessデータが以下のURLからとれるようにしました。  http://homepage3.nifty.com/mtaiyo/sanseyou.accdb  以上Accessのsanseyou.accdbファイルを元にして、 以下の設定項目を実行してください。    テーブル「T得意先マスター」とテーブル「T売上げデータ」の間にリレーションシップを設定します。    「T得意先マスター」の「得意先CD」を「T売上データ」の「得意先CD」までドラッグします。  ≪参照整合性≫のにチェック マーク記号を入れます。 ≪作成≫をクリックする。・・と以下のエラー表示がでて先に進みません。 「 ’T売り上げデータテーブルのデータが参照整合性の規則に違反しています。  たとえば、ある社員に関する売るレコードがリネーション テーブルにあるときに、この社員に関する レコードが主テーブルにありません。    リレーション テーブルのすべてのレコードのデータについていて、関連するレコードが主テーブルにあるようにしてください。  参照整合性の規則に従わないでリレーションシップを作成するときは、[参照整合性]チェックボックスを オフにしてください。」  FOM出版 SETP1 「リレーションシップを設定する」  の項目の、別な設定でも、同じエラーがでたので、最初からエクセルを再イポートしたら無くなりました。   次の設定にかかったところ又でたので、そもそもどこをどうすれば回避できますか!?  以上宜しくお願いいたします。  

  • Accessのリレーションシップ

    Access初心者です。 Access2010でデータベースを作っていて、行き詰ってしまいました。 テーブル1にフィールドABCDEFがあって、Aに主キーが付いています。(Aはテキスト型でフィールドサイズ10です。) テーブル2にはフィールドAGHがあり、Aに主キーが付いてます。(Aはテーブル1と同じです。) テーブル3にも同じくフィールドAIJがあり、Aに主キーが付いています。(Aはテーブル1と同じです。) テーブル1のフィールドAを主テーブルとし、テーブル2・3のフィールドAにリレーションを組んでいます。 この時のリレーションシップで参照整合性と連鎖更新と連鎖削除にチェックを入れ、種類が一対一になりました。 その後、テーブル1でレコードを追加しようとすると、「テーブル'2'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

  • Access ODBCからのリンクのリレーションシップ

    教えてください。 今 Access2000を使ってDBを作っています。 なんとかODBCにテーブルを置いてリンクさせるところまで たどり着いたのですが、 そのテーブルを使ってリレーションシップを組もうと思うと 参照整合性他2つあるチェック項目がチェックできない 状態になってしまっています。 (参照整合性にチェックを入れたいのですが) なぜなのでしょうか? もうさっぱりわからず・・・ どなたか教えてください。

その他の回答 (1)

  • 回答No.1
noname#189141

少なくともリレーションのキーである値は変更が出来ませんので、 ・一旦リレーションを解除して値を変更した後に戻す ・新しい値でマスタテーブルのレコードを作成→紐づいたテーブルのキーを変更→不要ならマスタの旧データーを削除 のどちらでしょうか。 キーとなる値は基本的に変更のないように設計すべきです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

とりあえず 「一旦リレーションを解除して値を変更した後に戻す」 の方法で対応しました 「キーとなる値は基本的に変更のないように設計すべきです」 そうなのですか、知りませんでした。 勉強になりました。

関連するQ&A

  • マイクロソフト アクセス リレーションシップの扱い方について

    よろしくお願いします。アクセスで作成したテーブル、例えばAとBには共通の番号があります。それぞれは各テーブル内で番号がいくつか重複しています。この番号により、リレーションシップの関連付け(参照整合性は行わず)を行った後、クエリで抽出したところ、ところどころ同じデータが発生して、膨大な量になってしまいます。参照整合性・フィールドの連鎖更新・レコードの連座削除をチェックして再度リレーションシップを作成しましたが、主テーブルで参照されている固有のインデックスが見つからないとのエラーメッセージが出ます。このテーブルA・Bを使用してデータが重複しないようにクエリで抽出する事はできますか。

  • 参照整合性などがクリックできない状態なのですが

    アクセスです。 リレーションシップを組もうとしたら リレーションシップの種類が一対多になり 参照整合性などがクリックできない状態なのですが どういう原因が考えられるのでしょうか? 最初T_カテゴリテーブルに主キーがなかったのですが リレーションシップの種類が未定義だったので カテゴリフィールドをを主キーにしたら一対多にはなったのですが 参照整合性などがクリックできない状態は変わらないです。

  • アクセスでリレーションシップの一対多で参照整合性で

    アクセスでリレーションシップの一対多で参照整合性で組める条件を教えてください。 例えば、 ・数値型とテキスト型のフィールドでは繋げられない。とか ・主キー同士でないとダメ。とか ・重複するデータが入っているレコードがある場合はダメ とか・・・ どういう条件がOKでどういう条件がダメなのかよくわからなくて混乱しています。 自分で試していますが、うまくいったりできなかったりです。

  • Access 参照整合性について

    一対多のリレーションシップで参照整合性の設定ができないし、1も∞も表示されず結合線のみです。一側のファイルは他のアクセスで作成したものをリンクしています。リンクファイルを使用していると参照整合性は設定できないですか?

  • Access2002 参照整合性について

    テーブル間にリレーションシップを設定する場合、リレーションテーブル側に主テーブルにないレコードがあると参照整合性を設定できないにも関わらず、「結合の種類」で「3」(リレーションテーブル側の全レコードと主テーブル側の同じ結合フィールドのレコードだけを含める)を選べるのは何故でしょうか。 参照整合性を設定できた時点で、リレーションテーブル側には主テーブルにないレコードは無いということだと思うのですが・・・。 よくわからなくなってしまいました。 お答え、よろしくお願いいたします。

  • Accessの参照整合性について

    アクセスでリレーションシップをはると参照整合性にチェックするボックスがありますよね。 以下の選択の組み合わせが考えられると思うのですが、 1.参照整合性にチェックしない場合 2.参照整合性のみチェックした場合 3.参照整合性と連鎖更新にチェックした場合 4.参照整合性と連鎖更新と連鎖削除にチェックした場合 一(マスタ)対多のリレーションを張ったとき、以下のように理解しています。 2.のとき マスタにあるものしか登録できない。また、マスタは他のテーブルにリレーションを張っている場合、削除も編集もできない。 3.のとき マスタにあるものしか登録できない。またマスタで更新をかけると、他のテーブルのレコードも更新がかかる。また、マスタは他のテーブルにリレーションを張っている場合、削除はできない。 4.のとき マスタにあるものしか登録できない。またマスタで更新、削除を行なうと他のテーブルのレコードも更新、削除がかかる。 では1.のときってリレーションシップは張れるのですが、何の意味があるのでしょうか?

  • Accessリレーションシップについて

    お世話になります。 Access2010 普段はクエリにて、いくつかのテーブルやクエリを紐づけているのですが リレーションシップの設定は今までやったことがありません。 ネットで調べて、 ・「参照整合性」にチェックを入れることにより、1対多の多側で1側に存在  しないIDで登録しようとするとエラーになる。   →間違ったデータが入力されるのを防ぐ。 ・多側でリレーションシップが設定されているフィールドに値を入力しない  ことは可能。但し、当該フィールドの「値要求」プロパティを"はい"に  した場合は、入力しないとエラーになる。 ・「フィールドの連鎖更新」にチェックを入れると、1側で変更したものが  多側でも自動的に変更される。 ・「レコードの連鎖削除」にチェックを入れると、1側で削除した場合、  多側で該当するデータをもつレコードが自動的に削除される。 上記については実際に試してみて動きを確認しました。 ※上記の認識違いや、もっと大事なことがあればご指摘、ご教示頂けると  幸いです。 今までは、こっちのテーブルで削除したらこっちのテーブルでも削除 みたいなことをやってたので、便利だとは思うのですが。。 以下のテーブルでリレーションシップの設定を行ったとします。 売上テーブル  ID 商品 担当者コード  1 AAAAA  3  2 BBBBB  1  3 AAAAA  1  4 CCCCC  2  5 CCCCC  3 担当者テーブル 担当者コード 担当者名  1     担当者A  2     担当者B  3     担当者C 売上テーブルの担当者コードと、担当者テーブルの 担当者コードでリレーションの設定を行い、「参照整合性」及び 「レコードの連鎖削除」にチェックを入れたとします。 例えばフォーム上にリストボックスを設置し ID 商品 担当者名 を表示し、リストボックス上で選択されたレコードを、削除ボタンを 押したら、そのレコードが削除されるプログラムを作成します。 ※選択されたレコードのIDを取得し削除クエリで削除。 リストボックスでID:5のレコードを選択し、削除ボタンを押した場合 売上テーブルのID:5のレコードを削除しても、担当者テーブルから 担当者コード:3のレコードは削除されない・・という認識でよろしい でしょうか。 ※要するに、1対多の多側で削除されても1側には影響無し。 同様にリストボックスでID:5のレコードを選択し、削除ボタンを押したときに 担当者コード:3を取得し、まずは担当者テーブルで担当者コード:3の レコードを削除すると、併せて売上テーブルのID:1及びID:5が削除 される。 要するに、上記のケースで「レコードの連鎖削除」の設定を行うと 本来削除すべきID:5以外のレコード(ID:1)まで削除されてしまう ことになる?? ※そもそも例がちょっと悪かったかもしれません。。 何が言いたいかというと、「フィールドの連鎖更新」「レコードの 連鎖削除」は、よーく考えて設定しないと意図しないところまで 更新されたり削除されてしまうのかなと。。なので、設定することに よって、プログラムの作りも変わってきてしまうことになるので しょうか。 理解不足で質問自体もモヤモヤしたものになってしまいましたが、 ご教示のほど、宜しくお願い致します。

  • MS ACCESSにおいてのリレーションシップ設定

    ACCESSを使用してシステムを構築しているのですが、テーブル間のリレーションシップについて疑問があります。 リレーションシップを設定することにより、データベースの整合性を得ることができますが、その他のメリットはあるのでしょうか? ある文献では検索時間の短縮になるとあったのですが、本当なのでしょうか? 通常の表結合クエリーと参照整合性以外の違いはどのようなものでしょうか? 回答をお願いします。

  • Accessの参照整合性

    MSAcess2000を使用しています。 テーブルのリレーションシップで、「参照整合性」という チェックがあるのですが、これにチェックを入れない場合の リレーションシップには何か意味があるのでしょうか? 「参照整合性」についてどういうものか、という説明は いろんなところに記述があるのでわかりました。 ですが、これにチェックを入れてこそ、外部キーの意味がある 気がするので、入れない場合について知りたいのです。 ご存知の方がいらっしゃいましたら、教えてください。 よろしくお願いします。

  • 未定義になるのは主キーじゃないのが原因?

    二つのテーブルを一対多のリレーションシップで繋ぐとき、 一になる方は主キーじゃないと、一対多にならなかったり参照整合性はできないのでしょうか? 主キーではないテーブル1のフィールド(一)と、(多)のテーブル2のフィールドでリレーションを組もうと思ってるのですが、 リレーションシップの種類が未定義になってしまいます。 これは、1になる方のテーブル1が主キーじゃないのが原因なのでしょうか? テーブル1のこのフィールドは、重複することはありませんが、空白も入る為、主キーにできないし、 主キーはほかのフィールドで使っています。