Как скопировать данные с одной таблицы в другую и обновить данные?
Есть 2 идентичные таблицы с полями - id, phone, name, nickname но с разными данными. Как я могу перенести данные с одной таблицы в другую и при условии что номер телефона есть в другой таблице - обновить значение имени, если оно не пустое. А если номера телефона нету то добавить запись. Буду благодарен за помощь:)
insert into users(phone, fullname, id_tg, nickname_tg)
select phone, fullname, id_tg, nickname_tg from temp_info
on conflict (phone) do update
set id_tg = excluded.id_tg,
nickname_tg = excluded.nickname_tg;
ОШИБКА: повторяемые значения ключа нарушают ограничение уникальности "users_pkey"
ДЕТАЛИ: Ключ (id)=(3) уже существует.
Попробовал но такую ошибку бросает, хотя не понимаю, я же id-шник не вставляю в конечную таблицу
попробую угадать, что id у вас был сделан типа serial, затем вставили какие-то строки с константными id, не дав сиквенсу выделить значения. Теперь сиквенс генерирует значения, по его мнению свободные, но которые уже записаны в таблицу вручную. Нужно выставить setval сиквенсу на следующее значение относительно реально существующих.