2011-01-09 33 views
0

這是我的數據庫截圖當我執行此查詢SQL Server的PK問題

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') 

它顯示了這樣的錯誤

消息547,級別16,狀態0,第1行 的INSERT語句與FOREIGN KEY約束「FK_Products_Type1」衝突。衝突發生在數據庫「AcidDB」,表「dbo.Type」,列'ID'中。 該聲明已被終止。

alt text

+3

有什麼問題嗎?錯誤消息看起來很簡單。 – 2011-01-09 09:58:50

回答

2

您正嘗試將記錄插入到表中Type不存在的TypeID中的產品。

表中沒有記錄ID爲「1」的類型。

2

在沒有看到FK定義,這是一個受過教育的猜測:

你的表類型不具有的1

所以ID的條目,試圖插入時1到TypeId列,找不到Type表中的匹配項,並且約束失敗。

無關聯: 爲什麼要將一個字符串('1')傳遞給INTEGER參數?

1

您正在將typeId 1插入到您的表中,但似乎在您的類型表中沒有定義typeId 1。

btw:你不需要把int值加入''!

1

你真的沒有問一個問題,但我想你不明白錯誤信息...
這很簡單:你的Products.TypeId字段有一個FK約束鏈接到表Type.ID.
由於沒有type.id值爲'1',您的插入會觸發錯誤。
也許,正如karlis指出的那樣,你有一個類型1(不含引號)!