psql (13.2 (Ubuntu 13.2-1.pgdg20.04+1)) Type "help" for help.
xbox=> create temp table test(id int primary key, price jsonb); CREATE TABLE xbox=> insert into test values(1,'{"RU":10}'); INSERT 0 1 xbox=> select * from test; id | price ----+------------ 1 | {"RU": 10} (1 row)
xbox=> insert into test values(1,'{"CA":20}') on conflict(id) do update set price=EXCLUDED.price || '{"CA":20}'::jsonb; INSERT 0 1 xbox=> select * from test; id | price ----+------------ 1 | {"CA": 20} (1 row)
Hello
You meant
... do update set price=test.price || '{"CA":20}'::jsonb;
? Or possibly
... do update set price=test.price || EXCLUDED.price;
?
In other words, why did you expect the result {"CA":20,"RU":10} ?
regards, Sergei