• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:クエリー列選択の基準)

クエリー列選択の基準と更新クエリの列選択について考える

このQ&Aのポイント
  • クエリー列選択の基準として、顧客コード、顧客名、商品名、数を表示することができます。
  • 更新クエリを作成する場合、顧客表の列を使用する場合と注文表の列を使用する場合があります。
  • 更新クエリの列の選択は、更新エラーなどを考慮して適切な列を選択する必要があります。

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

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

顧客コードの更新と言うことですが、マスターテーブル(顧客表)の主キー(顧客コード)を更新する場合と、トランザクションテーブル(注文表)の外部キー(顧客コード)を更新する場合では、意味合いが異なります。 マスターの主キーの更新は、キーの値そのものを更新します。 トランザクションの外部キーの更新は、マスターのどのレコードと関連付けるかの変更です。 ですので、単純に言ってしまえば、更新したい方のフィールドを選択すればいいだけです。 エラーが発生するかどうかと、列選択は関係ないですね。 エラーが発生するかどうかは下記のような原因がありますので、エラーが発生しないような値で更新すればいいのです。 通常は、マスターテーブルの主キーは通常は一度登録したら変更しないというのが原則です。もし、更新するなら、トランザクションテーブル(注文表)の外部キー(顧客コード)も連鎖して更新させる設定(ON UPDATE CASCADE)にしておく必要があります。連鎖更新の機能がオンになっていればエラーなく更新できますが、オフの場合は、エラーになります。後、重複する値を入力してもエラーになります。 トランザクションテーブル(注文表)の外部キー(顧客コード)を更新する場合は、マスターテーブル(顧客表)に存在するコードを入力すればエラーはでませんが、存在しないコードを入力すればエラーになります。

ShiftTail
質問者

お礼

情報ありがとうございます。 >顧客コードの更新と言うことですが、マスターテーブル(顧客表)の主キー(顧客コード)を更新する場合と、トランザクションテーブル(注文表)の外部キー(顧客コード)を更新する場合では、意味合いが異なります。 マスターの主キーの更新は、キーの値そのものを更新します。 トランザクションの外部キーの更新は、マスターのどのレコードと関連付けるかの変更です。 自分でも、度の表から参照しているか書き出してみたら 意味が分かりました。 親表のレコードを使用する時点で、意味が変わってしまうことも分かりました。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A