Теперь я сорта 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, если это имеет значение (это имеет значение!).
Я не могу поверить, что он застрял здесь более десяти лет ...
Что я должен рассмотреть, чтобы обойти это?
Использовать check
сортировки для 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