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

188
12 февраля 2019, 09:50

есть запрос выполняемый через JDBC, например :

 INSERT INTO TableName( id, name, phone) VALUES ('1', 'new_name', '12345');

Запись с таким ключом уже существует, и возникает:

duplicate key value violates unique constraint "TableName_pkey"

как сделать полную перезапись всей записи, если запись с таким ключом уже существует?

Думал можно использовать: ON CONFLICT DO UPDATE но в данном случае нужно указывать какие поля нужно обновлять. Но нужно сделать полную перезапись строки.

Answer 1

Если прям SQL, и вот прям не хотим проверять предварительно факт наличия записи (хотим в одном запросе все уместить), то для PostgreSql исользуем такую конструкцию

INSERT INTO TableName( id, name, phone) VALUES ('1', 'new_name', '12345')
ON CONFLICT (id) DO UPDATE SET name = 'new_name', phone = '12345' WHERE id ='1'
Answer 2

Если у вас ивестен первичный ключ, то надо делать обновление, а не вставку. Правильно будет

UPDATE TableName set name='new_name', phone='12345' where id='1';
READ ALSO
XML с параметрами (POST)

XML с параметрами (POST)

Можете пожалуйста пример какой подсказать для реализации post метода в контролере springПо условию контроллер, принимает на вход XML с параметрами

221
Как или чем параметризировать TouchAction

Как или чем параметризировать TouchAction

Строчка которая не работает:

182
Сделать блок поверх другого [закрыт]

Сделать блок поверх другого [закрыт]

При наведении на товар появляется краткое описание которое должно перекрывать собой все остальные блоки, но на практике это не такЗадал...

262