首页 >数据库 >mysql教程 >为什么 PostgreSQL 会抛出'引用表'bar'没有唯一约束”以及如何修复它?

为什么 PostgreSQL 会抛出'引用表'bar'没有唯一约束”以及如何修复它?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-08 22:13:07563浏览

Why Does PostgreSQL Throw

解码 PostgreSQL 错误:“引用表‘bar’没有唯一约束”

PostgreSQL 9.1 用户在构建互连表时经常遇到这个令人困惑的错误:“没有与引用表“bar”的给定键匹配的唯一约束。”本指南解释了根本原因和解决方案。

当表(例如,foobarbaz)通过外键链接时,通常会出现错误。 例如,bar 可能使用外键 (foo) 引用 foo_fk,而 baz 使用另一个外键 (bar) 引用 bar_fk

问题出在bar 表中。 虽然组合列上可能存在唯一索引(例如 foo_fkname),但 name 列本身缺少唯一约束。

考虑这种情况:bar 中的两行共享相同的 name 值(例如“ams”)。 尝试在 baz 中插入一行并引用 bar_fk 中的“ams”会产生歧义。 PostgreSQL 无法确定正确的 bar 行,从而导致错误。

解决方案:强制唯一性

修复方法很简单:向 name 表中的 bar 列添加唯一约束。 使用此 SQL 命令:

<code class="language-sql">ALTER TABLE bar ADD UNIQUE (name);</code>

这可确保每个 bar 行都有唯一的 name,从而解决歧义并实现成功的外键关系。 您的表结构现在将按预期运行。

以上是为什么 PostgreSQL 会抛出'引用表'bar'没有唯一约束”以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn