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 to happen 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 -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general