Задать вопрос
@efficeon1

Как сделать перезаписать строки в PostgreSql?

Добрый день,

есть запрос выполняемый через JDBC - INSERT INTO TableName( id, name) VALUES ('1', 'new_name');

Запись с таким ключом уже существует, и возникает duplicate key value violates unique constraint "TableName_pkey"
как сделать полную перезапись всей записи, если запись с таким ключом уже существует?

ON CONFLICT DO UPDATE - хочет указания каких полей нужно обновление.
Нужно сделать полную перезапись.
  • Вопрос задан
  • 282 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@hypertonyc
Не совсем понял, что вы хотите получить. Возможно вы имеете ввиду спец. выражение excluded:
INSERT INTO TableName (id, name)
VALUES (1, 'Петя')
ON CONFLICT (id)
DO UPDATE SET
name=EXCLUDED.name;

Если до запроса запись с id=1 уже существовала, то ее name заменится на 'Петя'.
Ответ написан
Kwisatz
@Kwisatz
Больше web-приложений, хороших и разных
В Postgre нет такого механизма.

Если у вас часто возникает такая ситуация то лучше начинать с update, ибо upsert это довольно затратная штука.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы