Я пытаюсь выяснить, как правильно выполнить upsert в postgres в таблицу, в которой есть столбец первичного ключа с автоматическим приращением, называемый «id», и уникальный ключ в столбце «name», ,Ускорение в столбцах Postgres и auto increment
Проблема в том, что исходные и целевые таблицы находятся на двух отдельных машинах, поэтому у меня нет простого способа узнать, что последний «идентификатор» находится в таблице назначения.
Теперь я делаю это прямо сейчас, импортируя данные из таблицы назначения в исходный, проверяя самый высокий «идентификатор», обновляя таблицу в исходной базе данных, а затем выполняя upsert в таблицу назначения, но, как вы видите, это кажется сложным.
Пример того, что я хочу сделать, это:
Источник таблицы:
id status name
1 ok John
2 open Monica
Таблица назначения:
id status name
. . .
. . .
44 ok David
45 open John
Результат upsert:
id status name
. . .
. . .
44 ok David
45 ok John
46 open Monica
Простой upsert будет иметь дублирующий конфликт ключа из-за столбца «id».
Почему вы просто не вставляете (статус, имя) без id, поэтому последовательность будет заботиться о id? .. –