首页 > 解决方案 > 插入,冲突时更新,为什么失败?postgresql, pgadmin

问题描述

我正在尝试将一个新表插入到一个大旧表中以更新多行,这是我的查询:

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)已存在。

但是,我曾经使用类似的查询来更新更复杂的表,但它确实有效。

不知道是什么问题

标签: postgresqlupsert

解决方案


推荐阅读