• ベストアンサー

SQL SERFVER で外部キーのエラー????

「INSERT ステートメントは FOREIGN KEY 制約 "○○" と競合しています。競合が発生したのは、データベース "△△"、テーブル "dbo.□□", column '◎◎' です。」 SQLサーバーマネジメントスタジオでインサートのクエリを流したところ、下記のエラーが発生したのですが、解決するにはどういった観点を調査すればよろしいでしょうか? ご存知の方、お願いします。

noname#171869
noname#171869

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

エラーメッセージそのものだけど、 インサートしようとしているデータに外部キー違反があるため、インサートできなかったってこと。 ・インサートをあきらめるか、 ・別の値をつけてインサートするか、 ・キーの設定を変えるか

noname#171869
質問者

お礼

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

関連するQ&A

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

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

  • SQL Server 2008 クエリをデバッグしていますで延々と時計マーク

    新しく搭載された 順位付け関数を使いたいと思い SQL Server 2008 Developerを購入してインストールしました。 2005からのアップグレードインストールが失敗するので 一度2005をアンインストールして、2008を新規インストールしました。 うまく行き、MS SQL Server Management Studio を開いて、TESTというデータベースをGUIで作成し 次のその中に dbo.SCORE_TABLE  というテーブルを作成しました。 新しいクエリの画面で、クエリを投げました。 select * from dbo.SCORE_TABLE ところが、待てど暮らせど クエリをデバッグしています というメッセージが出たままで延々と時計マークです。 キャンセルしました。 ほとんど2005と同じ画面に 見えるのですが、2008からはクエリを投げる前に 何かの設定作業が必要でしょうか? どうぞよろしくお願いいたします。

  • MS SQL Serverでのクエリ文

    MS SQL2005 の”SQL Server Management Studio”を使って下のクエリーを実行します。 例1は実行できますが、例2は実行できません。 なぜでしょうか? 例1 select * from [test].[dbo].[test_table] 例2 select * from ('[test].[dbo]' + '.[test_table]')

  • SQLでできますか?

    SQLでできますか? INSERT INTO test (A) VALUES (B)というSQLを発行したいのですが、このSQLのVALUESのBにあたる部分を正規表現的に指定して、一度のクエリで以下のような結果を得たいのです。 1.テーブルhogeのpiyoカラムの値の先頭がappleになっている行を探す。 2.(1.)で抽出した行のidの値をBとする。 例えば、以下のようにです。 ■皆様が回答してくださるSQL文(1クエリで行いたい) ???????????? ■皆様が回答してくださるSQL文と同等の意味を持つSQL群 INSERT INTO test (A) VALUES (100) INSERT INTO test (A) VALUES (101) INSERT INTO test (A) VALUES (102) ■テーブルhoge _____id_____piyo__________created 1. 100 applebanana 2009/01/02 2. 101 apple_12345 2009/01/03 3. 102 appleXXXXXX 2009/01/04 4. 103 bananananan 2009/01/05 5. 104 ringogogogo 2009/01/06 分かりにくい説明ですが、お詳しい方、どうかご回答の程を宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • VBAのSQLで引用符が閉じていませんのエラーが

    VBAでSQLのInsert文で'' の後で引用符が閉じていません。 と言うエラーが発生するのですが、そのエラーがでるSQL文を そのまま Microsoft SQL Server Managemnet Studio で実行すると エラーは出ずに正常に実行されます。 Insert文で''で書込む文字は1文字以上の文字列なので、引用符が 隣接しているわけではありませんので、何故エラーになるかわかりません。 どなたかご存知の方ご教授願います。

  • SQLサーバーのテーブルの値が更新できません

    お尋ねします。 SQLサーバー2005にDB1というデータベースにdbo_TB1というテーブルがあります。そのテーブルの特定の列の値を更新したいので、AC.mdbというアクセスのファイルにテーブルのリンクをし、更新したいファイルを用意して、アクセスのクエリでデータを更新しようとしましたところ、更新ができませんでした。  dbo_TB1を更新可能にするためには、どのようにして権限を与えればいいでしょうか。  SQLサーバー2005の知識を習得しようと学習を始めたばかりで、よく理解できていません。よろしくお願いします。

  • SQLについて

    うまく説明できるるかわかりませんが、 以下、解決方法がもしあれば教えてください。 VBで Oracleデータベースを接続し、 SQL実行をするツールを作成しています。 概要は、二つのデータベースを接続しています。 一つには、職員番号と、所属コード 二つ目には、職員番号と、異動地コード 選択した、所属コードから職員番号を引っ張ると、10名が該当して、 その全員に選択した異動地コードをinsertするというものです。 問題なく、できたのですが、 10名のうち1人は、別途で異動地コードを入力しており、そのあとに完成したセレクト文を流すと、一意制約に引っかかります。 職員番号と異動地コード、さらにinsertする日付などがユニーク制約をかけているので、理由もわかるのですが、はじかれる1人以外の9名だけinsertすることは可能なのでしょうか? できるかどうかもわからず、困っています(;_;) なにかいい方法があれば、教えてください。

  • AccessでSQL文を使って入力規則を入力したい。

    AccessでSQL文を使ったときにクエリを作りました。 クエリを実行してできたテーブルのテーブルデザインを見たときに 書式、小数点以下表示桁数、入力規則に何も入っていませんでした。 下記のSQL文をどのように変えたら、書式、小数点以下表示桁数、入力規則をデータベースのデータに追加できますか? CREATE TABLE 調査 (調査CD INTEGER PRIMARY KEY ,調査名 VARCHAR(20),調査日 DATE,調査時間 TIME); insert into 部門 (調査CD,調査名,調査日,調査時間) values (1,"外出",#2002/09/01#,#00:00:00#)

  • アクセスからSQL Serverのデーターを更新することができない。

    アクセスのデーターをSQLサーバーへ移行する計画があり、準備のため SQL Developer バージョンで独習中です。SQLサーバーにコピーしたテーブルにアクセスからログインするとテーブルは見られるのですが、データーの変更については「このレコードセットは更新できません」と表示されます。権限の問題ではないかと思われます。 環境と現状の設定: XP Professional SQL Server 2008 Developer Visual Studio 2008  サーバー名: SVR-1 セキュリティー ログイン名: SVR-1\taro サーバーロールのメンバーシップ:sysadmin データーベース名: project ユーザー名: dbo ログイン名: SVR-1\taro 既定のスキーマ: dbo 所有されているスキーマ:なし データーベースのロールメンバーシップ: db_owner 不思議なことに、Visual Studio 2008を使って試作したデーターベースはアクセスから書き換えができます。セキュリティーの設定も何ら変わりがないのですが。 データーベース (project)のユーザー名(dbo)の「所有しているスキーマ」にあるdata_reader, data_writer欄にチェックをいれても結果は同じです。 どこをどのように設定すれば良いのか、ご教示戴きますようお願い致します。

  • 時間範囲が重複したレコードを返すSQL

    PostgreSQL(データベース)の カラムに指定した時間範囲が存在する場合、エラーとし 存在しない場合、INSERTしたいのですが、 どのようなSQLを書けば良いでしょうか? ◆カラム内容 開始時間 終了時間 12:00   14:00 14:00   19:00 という2つのレコードが格納されていた場合に、 以下のSELECT→INSERTという流れで考えています。 19:00から19:05はOKで、INSERT処理を行う 18:55から19:05はNGで、重複したレコードを返す 10:00から12:00はOKで、INSERT処理を行う 10:00から12:05はNGで、重複したレコードを返す