- 締切済み
外部キーのリレーションが設定できない
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' です。 上記のようなエラーメッセージが出力される場合 どういった理由が考えられるのでしょうか。 色々試してみたのですがリレーションを設定することができません。 どうか教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- khazad-lefty
- ベストアンサー率44% (296/668)
解決済かもしれませんが、私が最近この現象で詰まってしまい、Webのどこにも情報を捜しきれなかったので。 > ALTER TABLE ステートメントは FOREIGN KEY 制約 "FK_shops_Shop_Area" と競合しています。競合が発生したのは、 > データベース "C:\....\091111_DATA.MDF"、テーブル "dbo.Shop_Area", column 'Shop_Area_ID' です。 これって、制約違反のデータが存在するときに出て来るメッセージのようです。 実際、作られた外部キーのテーブルに対して制約違反のデータを挿入しようとすると同じメッセージがきます。 で、私の場合、同じメッセージが出てきて、制約違反のデータを削除したら無事外部キーが作成できました。
- oboroxx
- ベストアンサー率40% (317/792)
恐らく作成しようとしているリレーションが既にあるという事だと思います。 SQL Server Managementでshopsテーブルを展開するとキーというのがあるのでその中にFK_shops_Shop_Areaがあると思われますので、それを右クリックして変更を選んでください。 するとダイアログが表示されますので、テーブルと列の指定を展開すると外部キーの関係が出ますので確認してみてください。
お礼
返信が遅れまして申し訳ございません。 回答ありがとうございます。 実は[Shops]テーブルは元々あったテーブルだったのですが [Shop_Area]テーブルは今度の検索システムのために新たに 作成したテーブルになります。 なので既にリレーションが作成されているというのは 少し考えにくいのです・・・、 SQL Server Managementはインストールされていませんでしたので 確認させていただきます。 ありがとうございました。