2011-01-09 15 views
0

これは、このようなエラーSQL ServerのPKの問題

メッセージ547、レベル16、状態0、行1 INSERTを示し、私は

INSERT INTO Products(CategoryID, TypeID, BarCode, ArtNumber, ProductName, Price, SelfPrice, PriceWithOutAWD, UnitsInStock, Comment) 
     VALUES('9', '1', '23', '23', 'kut', '20.29', '18.29', '19.10', '23', '19') 

このクエリを実行し、私のデシベルのスクリーンショットですFOREIGN KEY制約 "FK_Products_Type1"と競合しました。競合はデータベース "AcidDB"、テーブル "dbo.Type"、列 "ID"で発生しました。 ステートメントが終了しました。 FKの定義を見ることなく、これは推測です

alt text

+3

何が質問ですか?エラーmsgは簡単に見えます。 –

答えて

2

テーブルタイプに存在しないタイプIDを持つレコードを製品に挿入しようとしています。

テーブルにID「1」のレコードがありません。

2

:挿入しようとしたときに

あなたのタイプのテーブルには、だから、1

のIDを持つエントリがありませんa 1〜TypeId列の場合、Typeテーブルの一致するエントリが見つからず、制約が失敗します。

無関係

: はなぜINTEGERパラメータに文字列('1')を通過していますか?

1

あなたのテーブルにtypeId 1を挿入していますが、type-tableにtypeId 1が定義されていないようです。

btw:int値を ''に入れる必要はありません!

1

あなたは本当に質問しませんが、エラーメッセージを理解できないと思います...
非常に簡単です:Products.TypeIdフィールドには、テーブルType.IDにリンクするFK制約があります。
値 '1'のtype.idがないため、挿入によってエラーが発生します。
おそらく、karlisが指しているように、あなたはタイプ1(引用符なし)です!