我对我现在正在做的一项任务有异议。问题是:
编写一个INSERT语句,将该行添加到Products表中:
对此语句使用列列表。
我想出的答案是:
INSERT INTO Products(CategoryID, ProductCode, ProductName, Description, ListPrice, DiscountPercent, DateAdded)
VALUES (4, 'dgx_640', 'Yamaha DGX 640 88-Key Digital Piano', 'Long description to come.', 799.99, 0, SYSDATETIME()) 但是当我试图执行它时,会出现一个错误:
INSERT语句与外键约束"FK__Products__Catego__3B75D760“冲突。此冲突发生在数据库"MyGuitarShop“、表"dbo.Categories”、列“类别in”中。声明已被终止。
如能提供任何帮助,将不胜感激。
发布于 2018-10-13 18:43:11
错误非常明显--您试图将一个值插入到Products的Products列中,这会导致违反类别表的外键约束。
这意味着:您试图将一个值(4)插入到Products.CategoryID中,而在Category表中不存在。外键约束的作用是精确地防止这种情况----它将而不是允许您这样做--这是有充分理由的。
因此,基本上:您需要确保要插入到外键列中的值在执行INSERT之前在引用表(Category)中确实存在INSERT。
发布于 2018-10-13 18:50:06
您正在尝试在它引用的表中不存在的外键中插入一个值,在您的情况下是CategoryID。要解决这个问题,首先需要在表CategoryID中的catego列中插入数字4
发布于 2021-12-10 20:38:36

这种引用可能不需要强制执行。
创建一个新的数据库关系图并添加两个表。右键单击它们之间的连接线,选择属性。其中写着“执行外键约束”,将其更改为“否”。这为我解决了这个问题.
您要插入和引用的数字也可能是连接表中作为主键的自动编号行。我只能假设这会引起问题,而拥有该列是它自己的可编辑列值。
https://stackoverflow.com/questions/52796052
复制相似问题