• 締切済み

外部キーのリレーションが設定できない

VWD2008でSQLサーバーを使用して簡単な検索DBを作成しようとしています。 元々アクセスのデータベースファイルから SQLサーバーの機能を利用してSQLDBをエクスポートしました。 Shopsテーブルには [id]…主キー(自動採番) [Shop_Code]…販売店コード [Shop_Name]…販売店名 [Shop_Add]…住所 [Shop_AreaID]…Shope_Areaテーブルとリレーションを組む というフィールドが存在します。 Shop_Areaテーブルには [Shop_AreaID]…主キー(自動採番) [Shop_Area_Status]…北海道・仙台・東京・名古屋なとの地域情報が入ります。 ●Shope_Areaテーブル Shop_AreaID  | Area_Status |  ------------------------------------ 01      |   北海道  |   02      |   仙台   |    03      |   東京   |    VWD機能のデータベースダイアグラムより Shopsテーブルの[Shop_AreaID]と Shop_Areaテーブルの[Shop_AreaID]でリレーションを作成し ダイアグラムの保存を試みようとするとエラーダイアグラムが表示されてしまいます。エラーメッセージは以下の通りです。 テーブル 'Shop_Area' は正しく保存されました。 テーブル 'shops' - リレーションシップ 'FK_shops_Shop_Area' を作成できません。 ALTER TABLE ステートメントは FOREIGN KEY 制約 "FK_shops_Shop_Area" と競合しています。競合が発生したのは、 データベース "C:\....\091111_DATA.MDF"、テーブル "dbo.Shop_Area", column 'Shop_Area_ID' です。 上記のようなエラーメッセージが出力される場合 どういった理由が考えられるのでしょうか。 色々試してみたのですがリレーションを設定することができません。 どうか教えてください。

みんなの回答

回答No.2

解決済かもしれませんが、私が最近この現象で詰まってしまい、Webのどこにも情報を捜しきれなかったので。 > ALTER TABLE ステートメントは FOREIGN KEY 制約 "FK_shops_Shop_Area" と競合しています。競合が発生したのは、 > データベース "C:\....\091111_DATA.MDF"、テーブル "dbo.Shop_Area", column 'Shop_Area_ID' です。 これって、制約違反のデータが存在するときに出て来るメッセージのようです。 実際、作られた外部キーのテーブルに対して制約違反のデータを挿入しようとすると同じメッセージがきます。 で、私の場合、同じメッセージが出てきて、制約違反のデータを削除したら無事外部キーが作成できました。

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

恐らく作成しようとしているリレーションが既にあるという事だと思います。 SQL Server Managementでshopsテーブルを展開するとキーというのがあるのでその中にFK_shops_Shop_Areaがあると思われますので、それを右クリックして変更を選んでください。 するとダイアログが表示されますので、テーブルと列の指定を展開すると外部キーの関係が出ますので確認してみてください。

masaxy
質問者

お礼

返信が遅れまして申し訳ございません。 回答ありがとうございます。 実は[Shops]テーブルは元々あったテーブルだったのですが [Shop_Area]テーブルは今度の検索システムのために新たに 作成したテーブルになります。 なので既にリレーションが作成されているというのは 少し考えにくいのです・・・、 SQL Server Managementはインストールされていませんでしたので 確認させていただきます。 ありがとうございました。

関連するQ&A