PostgreSQL 外键约束中的意外值
Posted
技术标签:
【中文标题】PostgreSQL 外键约束中的意外值【英文标题】:Unexpected value in PostgreSQL foreign key constraint 【发布时间】:2016-01-10 07:41:18 【问题描述】:我有两个表,profiles
和cities
,我想在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