Django OneToOneField на иностранном столе
Я пытаюсь настроить новый сервер с внешними таблицами (используя postgres_fdw), которые ранее не были внешними таблицами, и у меня есть некоторые поля OneToOneFields, указывающие на эти таблицы. Это не работает "из коробки" - OneToOneFields использует внешние ключи, а postgres_fdw не поддерживает внешние ключи для внешних таблиц.
Внешние таблицы находятся в базе данных только для чтения на том же сервере.
Есть ли простой способ заставить это работать?
1 ответ
После небольшого исследования я думаю, что ответ "не делай этого". Обработка внешних ключей для внешних таблиц не реализована, и любое решение, которое пыталось бы преодолеть этот разрыв, имело бы серьезные проблемы с производительностью и / или согласованностью.
pglogical выглядит как лучшее решение - вместо того, чтобы извлекать данные через postgres_fdw, реплицируйте таблицы в новую базу данных, чтобы они были локальными. Существуют и другие проекты для репликации только определенных таблиц, но pglogical включен в PostgreSQL 10.