вставить в, на конфликте сделать обновление, почему не удается? postgresql, пгадмин - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь вставить новую таблицу в большую старую таблицу, чтобы обновить несколько строк, вот мой запрос:

INSERT INTO site_settings (set_id, set_sit_id,set_setting_name,set_setting_type)
SELECT set_id, set_sit_id, replace(TempTable2.stp_device_pool_filter, '${siteShortName}', TempTable2.sit_short_name), set_setting_type from TempTable2 where set_setting_type='DEVICE_POOL' 
ON CONFLICT (set_id) DO UPDATE 
  SET set_sit_id=excluded.set_sit_id,
  set_setting_name=excluded.set_setting_name,
  set_setting_type=excluded.set_setting_type;

он возвращает мне сообщение:

двойное значение ключа нарушает ограничение уникальности "unique_site_setting" ДЕТАЛИ: Ключ (set_sit_id, set_setting_name, set_setting_type) = (13, SBA123-rr, DEVICE_POOL) уже существует.

Однако я использовал аналогичный запрос для обновления гораздо более сложной таблицы, это сработало.

не знаю в чем проблема

...