当前位置: 首页 > 知识库问答 >
问题:

表约束中不存在后缀键

慕容俭
2023-03-14

尝试在 Postgres 9.5 中更改表以创建外键约束时:从 product_template.product_brand_idproduct_brand.id

ALTER TABLE public.product_template
    ADD CONSTRAINT product_template_product_brand_id_fkey 
    FOREIGN KEY (product_brand_id)
    REFERENCES public.product_brand (id) MATCH SIMPLE
    ON UPDATE NO ACTION
    ON DELETE SET NULL;

返回错误

ERROR:  insert or update on table "product_template" violates foreign key         constraint "product_template_product_brand_id_fkey"
DETAIL:  Key (product_brand_id)=(12) is not present in table "product_brand".
STATEMENT:  ALTER TABLE "product_template" ADD FOREIGN KEY ("product_brand_id") REFERENCES "product_brand" ON DELETE set null

我很困惑为什么帖子试图找到product_brand.产品_品牌_id,当密钥是从product_template.产品_品牌_idproduct_brand.id

有什么想法吗?

共有2个答案

钱跃
2023-03-14

简单地说,ALTER语句中提供的外键(product_brand_id)的值在源(product_brand)表中不存在。

史烨
2023-03-14

该错误消息只是说明在表< code>product_template中至少有一行在< code>product_brand_id列中包含值< code>12

但是表product_brand中没有对应的行,其中列id包含值12

< code > Key(product _ brand _ id)=(12)关联外键的源列,而不是目标列。

 类似资料:
  • 问题内容: 您好,我试图在我的一张表中显示约束,但是由于某种原因,我收到未选择任何行的消息。下面记录的是我创建的表。 这是我用来显示约束的代码。 我是一个菜鸟,所以我想确保自己了解什么地方出了问题。我曾尝试删除该表,以为我的约束没有发生- 创建表并在另一个表中引用TeamID时,我没有,也没有收到任何错误。因此,当我尝试删除表时,我会得到一条错误消息,当时正是我所希望的。 问题答案:

  • 问题内容: 在我的数据库创建脚本中,创建脚本如下所示: 第一次运行良好,但是如果我再次运行,它将在最后一行失败,并带有“写入或更新时复制密钥”。 有什么办法可以做类似的事情吗?就像我可以使用查询吗? 问题答案: 有趣的问题。您可能需要在调用语句之前禁用外键,然后再启用它们。这将允许您直接在DDL中定义外键: 例: 测试用例:

  • 我有两个组件和。每个组件都是由<code>ConstraintLayout</code>创建的。现在,我从上面的组件创建<code>WelcomeScreen</code>。 用例1:使用静态< code>ConstraintLayout(在< code>ConstraintLayout内的< code>ConstraintLayout) 结果:布局预览不显示任何内容 用例2:<代码>Welcom

  • 对于类,我们的任务是使用“抽象中的双链接列表堆栈实现”将中缀表达式转换为后缀。我能够编写一个使用堆栈进行转换的程序,但是双链表的用途是什么?我们将向列表中添加哪些信息节点? 这是作为示例提供给我们的堆栈类。为什么下一个变量是Stack类型?不应该是节点吗? 如果我创建双向链表和节点类,节点对象中有什么数据?

  • 问题内容: 我收到以下错误: 违反主键约束’PK_ss_student_grade’。无法在对象“ dbo.ss_student_grade”中插入重复的密钥。重复密钥值为(301、1011、24801、33)。 如果我在插入之前检查表,则没有记录具有这样的主键。 插入是通过C#代码完成的,并且我确保该代码仅运行一次。即使在错误之后,如果我检查表,我仍然无法获得具有这样的主键的记录。 注意:触发器

  • 问题内容: 我可以在存储的过程中实现所需的约束,但是我想知道是否可以定义一组可以完成此工作的外键约束。 我有几个表,这些表具有以下关键关系: 我的问题是: 是否可以在同时要求BaseRFQId和SolId引用具有相同NSNId的记录的BaseRFQsSols上设置外键约束? 是否可以在RFQsSolsParts上设置外键约束,以要求SolId和PartId引用具有相同NSNId的记录, 并 要求R