プロが教えるわが家の防犯対策術!

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' です。

上記のようなエラーメッセージが出力される場合
どういった理由が考えられるのでしょうか。
色々試してみたのですがリレーションを設定することができません。

どうか教えてください。

「外部キーのリレーションが設定できない」の質問画像

A 回答 (2件)

解決済かもしれませんが、私が最近この現象で詰まってしまい、Webのどこにも情報を捜しきれなかったので。



> ALTER TABLE ステートメントは FOREIGN KEY 制約 "FK_shops_Shop_Area" と競合しています。競合が発生したのは、
> データベース "C:\....\091111_DATA.MDF"、テーブル "dbo.Shop_Area", column 'Shop_Area_ID' です。

これって、制約違反のデータが存在するときに出て来るメッセージのようです。
実際、作られた外部キーのテーブルに対して制約違反のデータを挿入しようとすると同じメッセージがきます。
で、私の場合、同じメッセージが出てきて、制約違反のデータを削除したら無事外部キーが作成できました。
    • good
    • 1

恐らく作成しようとしているリレーションが既にあるという事だと思います。


SQL Server Managementでshopsテーブルを展開するとキーというのがあるのでその中にFK_shops_Shop_Areaがあると思われますので、それを右クリックして変更を選んでください。
するとダイアログが表示されますので、テーブルと列の指定を展開すると外部キーの関係が出ますので確認してみてください。
    • good
    • 0
この回答へのお礼

返信が遅れまして申し訳ございません。
回答ありがとうございます。

実は[Shops]テーブルは元々あったテーブルだったのですが
[Shop_Area]テーブルは今度の検索システムのために新たに
作成したテーブルになります。
なので既にリレーションが作成されているというのは
少し考えにくいのです・・・、

SQL Server Managementはインストールされていませんでしたので
確認させていただきます。

ありがとうございました。

お礼日時:2009/11/16 18:15

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