Этот вопрос задавали несколько человек, но моя проблема, кажется, другая.
На самом деле я должен объединить те же структурированные таблицы из разных баз данных в postgresql в новую БД. Что я делаю, так это то, что я подключаюсь к удаленной базе данных с помощью dblink, считываю эту таблицу в этой базе данных и вставляю ее в таблицу в текущей базе данных, как показано ниже
INSERT INTO t_types_of_dementia SELECT * FROM dblink('host=localhost port=5432 dbname=snap-cadence password=xxxxxx', 'SELECT dementia_type, snapid FROM t_types_of_dementia') as x(dementia_type VARCHAR(256),snapid integer);
В первый раз этот запрос работает нормально, но когда я запускаю его снова или пытаюсь запустить его с таблицей какой-то другой удаленной базы данных: он выдает мне эту ошибку
ОШИБКА: двойное значение ключа нарушает уникальное ограничение
"T_types_of_dementia_pkey"
Я хочу, чтобы эти новые таблицы заполнялись записями других таблиц из других БД.
Некоторые из предложенных решений говорят о последовательности, но я не использую
Структура таблицы в текущем дБ
CREATE TABLE t_types_of_dementia(
dementia_type VARCHAR(256),
snapid integer NOT NULL,
PRIMARY KEY (dementia_type,snapid)
);
P.S. Существует конкретная причина, по которой оба столбца используются в качестве первичного ключа, которая может не иметь отношения к данному обсуждению, поскольку такая же проблема возникает в других таблицах, где это не так.