2011-01-09 63 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(不含引号)!