Я пытаюсь выполнить upsert для столбца массива, но не могу достичь следующего результата.
Имя таблицы настройки
id primary key unique
user_id foreign_key integer unique
friends array
tags array
count integer
created_at datetime
updated_at datetime
select * from settings order by id asc limit 1;
id | 177
user_id | 111
friends | {1,2,3}
tags | {4,5}
created_at | 2020-01-23 10:30:27.814489
updated_at | 2020-02-29 00:00:00
count | 5
insert into settings(
user_id, friends, tags, created_at, updated_at)
VALUES (111, '{6,7}', '{5000,5001}', now()::date , now()::date )
on conflict (user_id) do
update set
friends = array_cat(excluded.friends, '{6,7}'),
tags = array_cat(excluded.tags, '{5000,5001}'),
updated_at = now()::date;
После выполнения вышеуказанного запроса при проверке результата
select * from settings order by id asc limit 1;
id | 177
user_id | 111
friends | {6,7,6,7}
tags | {5000,5001,5000,5001}
created_at | 2020-01-23 10:30:27.814489
updated_at | 2020-02-29 00:00:00
count | 5
Я теряю свои старые ценности. Кроме того, новые значения вставляются дважды. Может ли кто-нибудь помочь мне с этим
Примечание: array_append не будет работать, потому что он добавляет только один элемент за раз, тогда как мне нужно добавить массив