Теперь я сорта 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

1 ответ1

0

Просто обновитесь до 9.6.

Мой скрипт для обновления здесь: https://pastebin.com/PzcatZaQ (да, мне пришлось обновить несколько узлов - dev/test farm)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .