Re: Postgree INSERT ON CONFLICT DO NOTHING
От: Mace Windu  
Дата: 22.05.21 08:21
Оценка:
Здравствуйте, swimmers, Вы писали:

S>Здравствуйте,


S>Что-то не пойму, какой нужно написать код, что-бы при вставке при совпадении ПК ничего не вставлялось и не возникала ошибка?

S>Т.е. что-бы получился SQL вида INSERT ... ON CONFLICT (...) DO NOTHING?

S>db.Table.InsertOrUpdate(insertExpr, updateExpr, keySelector)?

S>Но что писать во втором параметре (updateExpr)?

S>Или есть какой-то другой рекомендуемый способ?


Полноценная поддержка ON CONFLICT и подобных пока только в планах. Нужно время либо добровольцы.

InsertOrUpdate для postgresql генерирует INSERT ON CONFLICT UPDATE. Если устраивает такое, то в update просто указать обновление поля на себя же например
db.Table.InsertOrUpdate(
  // данные для insert: PK поля + остальные поля которые надо вставить
  () => new Table() {pk=pk_value, field1=value1, field2=value2},
  // данные для update: обновить field1 значением этого же поля
  record => new Table() { field1 = record.field1 });

как-то так
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.