现在我有点像 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(是的,我必须升级几个节点——开发/测试场)