• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:リレーションシップ更新)

リレーションシップ更新

jamshid6の回答

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

質問の内容からは、以下のような理解をしたのですが、 TBL1 (KEY1,KEY2,KEY3,KEY4,...) TBL2 (KEY1,KEY2,KEY3,KEY4,...) ALTER TABLE TBL2 ADD CONSTRAINT [FK1] FOREIGN KEY (KEY1,KEY2,KEY3,KEY4) REFERENCES TBL1 (KEY1,KEY2,KEY3,KEY4) ON UPDATE CASCADE 上記の状態で、TBL1のキーを更新する Expressで直接またはAccessのリンクテーブル経由でも、おっしゃるような事象が確認できなかったのですが、可能ならば再現できるサンプルを示していただけませんか。

MIURA0802
質問者

補足

ご返事有難うございます。 TBL1のKEY1を直接変更するとKEY1,KEY2,KEY3は変更されるみたいですが,KEY4が1行目のデータを引きずっているみたいです。実際のメッセージは”エラーメッセージ:制約’テーブル名_PK’のPRIMARYKEY違反。オブジェクト’テーブル名’には重複したキーを挿入できません。ステートメントは終了されました。エラーを修正して再実行するかまたは、ESCをおして変更キャンセルしてください。”とでます。 TBL1(1、2、3) TBL2(1、2、3、AAAA)(1、2、3、BBBB) とあるときにTBL1を開きKEY1の1を変更し3にするとき上記のメッセージが出ます。実際SQLを実行しているのではなくACCESSのリンクしたテーブルを開きデータを変更したときにでます。 なぜ、KEY4だとわかったかと言えばエラーがでるのでTBL2のKEYをすべて主KEYを削除しINDEXのみの指定にしたところTBL1のKEY1,KEY2,KEY3に一致するTBL2のレコードのKEY4がすべて”AAAA"になっていました。ACCESSではうまく主KEYを設定してデータを変更すれば思っているように変更されていましたので同じ様にならないかと思いまして投稿させて頂きました。うまく説明できていないかも知れませんがSQLSERVERを触ったことないのでなかなか判らなくて、ご迷惑をお掛けしますが宜しくお願いします。

関連するQ&A

  • sqlserverの場合はテーブルの連結した状態では更新できないのでしょうか

    accessユーザーです sqlserver2005にアップサイジングしたあと修正をしていますが accessの場合クエリおよびsqlのprgで作成したテーブルの連結リレーショナルで更新ができていたのですが sqlserverの場合はテーブルの連結した状態では更新できないのでしょうか ご教授おねがいします

  • SQLServer2005ExpressEditionのことで

    SQLServer2005ExpressEdition(無償版)でのAccessからのアップサイジングは可能かどうかご存知のかたいらっしゃいますか? Accessのアップサイジングを考えております。どなたかお教えください。

  • Accessからのアップサイジング

    SQLServer2005ExpressEdition(無償版)でのAccessからのアップサイジングは可能かどうかご存知のかたいらっしゃいますか? アップサイジングの方法は 各ファイルをアップサイジングウィザードに従って、進めていけばいいのですよね??

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

    2つのテーブルをリレーションシップ設定することによって、レコードの更新は出来るのですがレコードの追加が出来ません。ODBC経由でACCESS2000へ2つのテーブルをアタッチして操作しています。 レコードの追加は出来ないのでしょうか?よろしくお願いします。 サーバ:W2000SEREVER_SP4 SQL Server 2005 Enterprise Edition クライアント:W2000PRO_SP4 ACCESS2000_SP3

  • Accessのアップサイジングウィザード

    Accessのアップサイジングウィザードを使用し、SQLServerへ テーブルとデータを移行しようと考えています。 Access2000、SQL Server 2005 Express Editionを使用して います。 アップサイジングウィザードで「既存のデータベースを使用する」 を選択すると移行できるのですが、「新しいデータベースを作成 する」を選択すると、移行できません。レポートに「Table was skipped or export failed」と表示されます。 (ログインユーザはcreate table権限があります。) アップサイジングウィザードの手順書には、、「新しいデータベース を作成する」を選択すると書いてあるので、うまくいかない理由を 知りたいと思います。 宜しくお願い致します。

  • ストアド更新履歴

    ストアドの更新履歴情報を簡単に見る方法ご存知の方、教えて下さい。 SQLServer2005を使っています。(Editionは不明 > 何処から確認するかわからなかったため。express editionではないです。)

  • エクセルのデータをアクセスのテーブルにインポート

    エクセルのデータをアクセスのテーブルにインポートしたくて、 アクセスから外部データのインポートでエクセルを指定してるのですが ************************************************************************ ワークシート インポートウィザード インデックス、主キー、またはリレーションシップで重複する値が生成されてるため、 テーブルを変更できませんでした。 重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。 ************************************************************************ になってしまいます。 エクセルの列名を見ても重複していないし(COUNTIF関数で確認しました) アクセス側のウィザードでインデックスはどこのフィールドにもつけてないし、 「主キーを設定しない」もしくは「主キーを自動的に設定する」にしているのに、何をやっても上記のエラーがでます。 ググっても同じようなエラー内容が見つからないのですが、どうしたらいいでしょう? ヴァージョンはエクセルは2007、アクセスは2010です。バージョンの相違が原因でしょうか?

  • accessでのリンクテーブルの更新

    いつもお世話になっております。 AccessからSQLServerのテーブルにリンクをはっています。 このリンクテーブルをupdate文で更新したいのですが、 「更新可能なクエリであることが必要」とでています。 以前にも類似の質問をしました。 http://okwave.jp/qa/q6581636.html しかし、いったん解決したのですが、別のところで同様の現象が でてしまいました。 調べると、リンク先のSQLServerのテーブルにはキーが存在していて、 Access側からリンクするときには自動的に一意設定されてしまいます。 発行したいupdate文はこのキーとは別の項目が一意になっていないと だめな条件付けがされているのです。 リンクをはるときに、SQLServer側ですでに設定されているキーとは 違った項目を一意項目として選択する方法はあるのでしょうか? 調べてみると、まったくキーのないテーブルをリンクするときは当然、 一意な項目を選べるのですが、キーがすでにある場合はだめな ようでした。 毎度のことでお手数なのですが、どうかよろしくお願い申し上げます。

  • 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'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

  • GoogleChromeは自動更新するの?

    Android版のGoogleChromeは手動、自動で更新されるのは知っています。Win11PC版GoogleChromeの手動更新の方法は分かっていますが、タスクスケジュールにより、自動更新されるのでしょうか?更新パッチが配布されてから遅れて更新されるのだとは思いますが、教えてください。