PostgreSQL 外键约束中的意外值

Posted

技术标签:

【中文标题】PostgreSQL 外键约束中的意外值【英文标题】:Unexpected value in PostgreSQL foreign key constraint 【发布时间】:2016-01-10 07:41:18 【问题描述】:

我有两个表,profilescities,我想在profiles 表中添加一个列city_id 作为外键,并使其引用cities 表中的id 列。所以我运行以下代码:

alter table profiles add column city_id integer REFERENCES cities(id);

奇怪的是,当我查看profiles 表 DDL 时,我看到以下内容:

FOREIGN KEY ("30") REFERENCES public.cities (id)
MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION

当我预料到的时候

FOREIGN KEY (city_id) REFERENCES public.cities (id)
MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION

我做错了什么?

【问题讨论】:

如何“查看 DDL”以及您的 Postgres 版本是什么?您确定要查看相同的数据库和架构吗? @ErwinBrandstetter 我想我找到了问题所在,多亏了你 :) 我认为这是新 JetBrain 的 DataGrip IDE 中的一个错误 ... 【参考方案1】:

我认为这可能是新 JetBrains 的 DataGrip IDE 中的一个错误,因为当我使用 pgAdmin 时,我看到了我的预期:

CONSTRAINT profiles_city_id_fkey FOREIGN KEY (city_id)
REFERENCES cities (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION  

【讨论】:

【参考方案2】:

您可能使用上下文菜单中的“复制 DDL”。 试试这个: — 在表格上按 Ctrl+q(Mac 上为 Ctrl+j),或者 — 双击对象,然后选择 DDL 选项卡(而不是“数据”)

【讨论】:

以上是关于PostgreSQL 外键约束中的意外值的主要内容,如果未能解决你的问题,请参考以下文章

如何使Doctrine PostgreSQL外键约束DEFERRABLE

Postgresql多个表具有相同的外键唯一约束

PostgreSQL中复合类型列子列的外键约束

10约束

postgresql----数据库表约束----FOREIGN KEY

完整性错误:更新或删除违反外键约束。 Django + PostgreSQL