Я пытаюсь вставить в таблицу в базе данных Postgres две другие базы данных Postgres с использованием сторонних упаковщиков данных.Цель состоит в том, чтобы иметь первичный ключ с автоматическим генерированием, независимый от источника, поскольку их будет больше двух.
Сначала я определил таблицы следующим образом:
Целевая база данных:
create table dummy (
dummy_pk bigserial primary key
-- other fields
);
Источники базы данных:
create foreign table dummy (
dummy_pk bigserial
-- other fields
) server ... ;
Это решение работало нормально, пока я вставлял из одного источника, когда я пытался вставить из другого, без указания dummy_pk, я получил это сообщение:
Дублирующий ключ (dummy_pk) = (1)
Поскольку postgres пытается вставить идентификатор 1, я считаю, что последовательность, используемая для каждой исходной внешней таблицы, отличается,Я немного изменил исходные таблицы, пытаясь позволить последовательности целевой таблицы выполнить работу для идентификатора:
create foreign table dummy (
dummy_pk bigint
-- other fields
) server ... ;
На этот раз я получил другую ошибку:
NULLзначение не соответствует содержанию NOT NULL для столбца «dummy_pk»
Поэтому я считаю, что исходный сервер отправляет запрос к цели, где значение dummy_pk равно нулю, и цель не заменяет его значением по умолчанию.
Итак, есть ли способ, которым я могу принудительно использовать последовательность цели в запросе, выполненном на источнике?Может быть, я должен поделиться этой последовательностью, могу ли я создать чужую последовательность?Я не могу удалить столбец на сторонних таблицах, так как мне нужен доступ для чтения к ним.
Спасибо!