PostgreSQL 10. С помощью этой функции upsert обновить, только если значение столбца отличается? - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу обновить apr, только если он другой, сейчас он выглядит так, как будто он обновляется независимо от того, другой он или нет:

   INSERT INTO live_mytable (id, loan_type, apr, term, oldestyear) 
   SELECT id, loan_type, apr, term, oldestyear
   FROM   imp_mytable 
   ON CONFLICT (id,loan_type,term,oldestyear) DO update
   set apr = excluded.apr;

Как этот запрос можно изменить только для обновленияесли значение отличается?

1 Ответ

0 голосов
/ 28 февраля 2019

Вы можете использовать предложение WHERE для обновления:

 INSERT INTO live_mytable (id, loan_type, apr, term, oldestyear) 
   SELECT id, loan_type, apr, term, oldestyear
   FROM   imp_mytable 
 ON CONFLICT (id,loan_type,term,oldestyear) 
 DO update
   set apr = excluded.apr
 WHERE 
      live_mytable.apr IS DISTINCT FROM 
      EXCLUDED.apr;
...