[GENERAL] upsert and update filtering
От | armand pirvu |
---|---|
Тема | [GENERAL] upsert and update filtering |
Дата | |
Msg-id | 83A34E99-40BD-4781-B2AA-AC085FE9F4B8@gmail.com обсуждение исходный текст |
Ответы |
Re: [GENERAL] upsert and update filtering
|
Список | pgsql-general |
Hi create table dimc1 ( col1 integer not null, col2 char(10), primary key (col1) ); create table dimc2 ( col1 integer not null, col2 char(10), primary key (col1) ); testdb=# select * from dimc1 order by 1; col1 | col2 ------+------------ 111 | foo111 112 | foo112 (2 rows) testdb=# select * from dimc2 order by 1; col1 | col2 ------+------------ 111 | foo111 112 | foo122 211 | foo211 In general it is my understanding it gows like this insert into dimc1 select * from dimc2 on conflict (col1) do update SET col2 = EXCLUDED.col2 ; insert into dimc1 select * from dimc2 on conflict (col1) do update SET col2 = EXCLUDED.col2 returning * ; So far so good But what if in the conflict situation I want to performa the update ONLY if the record is different. The update seems tohappen no matter what In other words is there anyway I can filter the update to happen (based on the sample date) only for 112 since col2 is different? testdb=# select * from dimc1 order by 1; col1 | col2 ------+------------ 112 | foo112 testdb=# select * from dimc2 order by 1; col1 | col2 ------+------------ 112 | foo122 Thanks Armand
В списке pgsql-general по дате отправления: