首页 > 数据库 > mysql教程 > 为什么 Postgres 在创建外键时会抛出'没有匹配给定键的唯一约束”错误?

为什么 Postgres 在创建外键时会抛出'没有匹配给定键的唯一约束”错误?

Linda Hamilton
发布: 2025-01-08 22:19:53
原创
717 人浏览过

Why Does Postgres Throw a

了解 Postgres 引用完整性错误

在 Postgres(版本 9.1 或更高版本)中构建数据库结构时,您可能会遇到以下错误:

<code>ERROR: there is no unique constraint matching given keys for referenced table "bar"</code>
登录后复制

此错误是由于 Postgres 强制执行引用完整性而引起的,引用完整性是数据库一致性的一个重要方面。 让我们来分析一下原因和解决方法。

引用完整性和外键

引用完整性确保相关表之间的数据一致性。 外键关系在表之间建立链接。 例如,如果表 bar 具有引用表 foo_fk 中的 name 列的外键 foo,则引用完整性要求 foo_fk 中的每个 bar 值必须对应于name.foo

唯一约束的作用

为了维护引用完整性,Postgres 需要对引用列(表

中的 name)进行唯一约束。 此约束保证 foo 中的每个 name 值都是唯一的,允许 Postgres 明确标识引用的行。foo

错误原因:缺少唯一约束

错误消息表明外键引用的列缺少唯一约束。 如果

中的 name 列缺少唯一约束,Postgres 无法可靠地将 foo 中的 foo_fk 值链接到 bar 中的特定行,从而导致错误。foo

解决错误:添加唯一约束

解决方案很简单:向引用的列添加唯一约束。 在 SQL 中,这是使用

ALTER TABLE 命令完成的:ADD CONSTRAINT

<code class="language-sql">ALTER TABLE foo ADD CONSTRAINT foo_name_unique UNIQUE (name);</code>
登录后复制
此添加强制

中的 name 列的唯一性,满足 Postgres 对引用完整性的要求并使外键关系能够正确运行。 添加约束后,尝试创建外键关系应该会成功。foo

以上是为什么 Postgres 在创建外键时会抛出'没有匹配给定键的唯一约束”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板