Как перезаписать все поля при вставке повторяющейся записи в PostgreSQL - PullRequest
0 голосов
/ 17 апреля 2020

Предположим, у вас есть таблица с одной записью, где первое поле (со значением "ID100") является первичным ключом.

('ID100', 'b', 'c', 'd', 256)

Теперь предположим, что вы хотите вставить кортеж

('ID100', 'e', 'f', 'g', 123)

С дублирующимся первичным ключом.

Конечным результатом должна быть таблица с одной записью:

('ID100', 'e', 'f', 'g', 123)

Как написать оператор вставки, чтобы перезаписать все поля в подобных случаях, где конфликтует первичный ключ?

Я посмотрел это руководство: https://www.postgresqltutorial.com/postgresql-upsert/ ... но я не вижу, как перезаписать все поля .

1 Ответ

0 голосов
/ 17 апреля 2020

Использование on conflict

insert into the_table (id, col2, col3, col4, col5)
values ('ID100', 'b', 'c', 'd', 256)
on conflict (id) do update
   set col2 = excluded.col2,
       col3 = excluded.col3, 
       col4 = excluded.col4, 
       col5 = excluded.col5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...