挂起添加外键:有解决方法吗?

挂起添加外键:有解决方法吗?

现在我有点像 PostgreSQL DBA/dev......
并且面临着一个看起来很著名的问题:

alter table assessment -- quite simple new table: (event int, value bool)
  add constraint assessment_event_fk
    foreign key (event)
    references rtls(id) -- it refs the primary key integer field

添加not valid(以后无用的希望validate)也无济于事。

是的,我知道,它挂了(该rtls表现在大约有 2M 条记录)。
而且必须回到pg_dump基础,编辑 SQL,然后重新加载。
我从 2003 年左右开始在帖子中看到这个“建议”...

现在是 9.2.18来自 CentOS 7 上的标准部署,如果重要的话(是的!)。

我不敢相信它在这里停留了十多年......
我应该考虑什么来解决这个问题?

使用 sortacheck来表示exists (select id from rtls where id=?)???
没办法:

vad=> alter table assessment add constraint assessment_event_fk check(exists (select rtls.id from rtls where rtls.id=event));
ERROR:  cannot use subquery in check constraint

答案1

只需升级到 9.6 即可。

我的升级脚本在这里:https://pastebin.com/PzcatZaQ(是的,我必须升级几个节点——开发/测试场)

相关内容