首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入语句与外键约束冲突?

插入语句与外键约束冲突?
EN

Stack Overflow用户
提问于 2018-10-13 18:33:22
回答 3查看 18.3K关注 0票数 0

我对我现在正在做的一项任务有异议。问题是:

编写一个INSERT语句,将该行添加到Products表中:

  • ProductID:下一个自动生成的ID
  • CategoryID: 4
  • ProductCode: dgx_640
  • ProductName:雅马哈DGX 640 88-关键数字钢琴
  • 描述:漫长的描述即将到来。
  • ListPrice: 799.99
  • DiscountPercent: 0
  • DateAdded:今天的日期/时间。

对此语句使用列列表。

我想出的答案是:

代码语言:javascript
复制
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”中。声明已被终止。

如能提供任何帮助,将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2018-10-13 18:43:11

错误非常明显--您试图将一个值插入到ProductsProducts列中,这会导致违反类别表的外键约束。

这意味着:您试图将一个值(4)插入到Products.CategoryID中,而Category表中不存在。外键约束的作用是精确地防止这种情况----它将而不是允许您这样做--这是有充分理由的。

因此,基本上:您需要确保要插入到外键列中的值在执行INSERT之前在引用表(Category)中确实存在INSERT

票数 3
EN

Stack Overflow用户

发布于 2018-10-13 18:50:06

您正在尝试在它引用的表中不存在的外键中插入一个值,在您的情况下是CategoryID。要解决这个问题,首先需要在表CategoryID中的catego列中插入数字4

票数 0
EN

Stack Overflow用户

发布于 2021-12-10 20:38:36

这种引用可能不需要强制执行。

创建一个新的数据库关系图并添加两个表。右键单击它们之间的连接线,选择属性。其中写着“执行外键约束”,将其更改为“否”。这为我解决了这个问题.

您要插入和引用的数字也可能是连接表中作为主键的自动编号行。我只能假设这会引起问题,而拥有该列是它自己的可编辑列值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52796052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档