我有两个具有不同值的相似表:
users_groups_old
user_id | group_id | rating | registered
----------------------------------------
1 | 1 | 1 |
1 | 2 | 2 |
2 | 2 | 3 |
users_groups
user_id | group_id | rating | registered
----------------------------------------
1 | 1 | 10 |
1 | 2 | 20 |
如果行已存在,我想“合并”两个表或对等级求和。 最后,我要获取下表(表键为:user_id + group_id):
users_groups
user_id | group_id | rating | registered
----------------------------------------
1 | 1 | 11 |
1 | 2 | 22 |
2 | 2 | 3 |
我尝试了以下操作
insert into users_groups
select *
from users_groups_old
on conflict (user_id, group_id)
do update
set rating = users_groups.rating + excluded.rating;
但是得到了错误
SQL Error [42P10]: ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification
我不明白我在做什么错?
答案 0 :(得分:0)
数据库似乎无法识别(user_id, group_id)
的唯一约束。请检查定义是否正确,然后尝试直接使用约束名称:
...
on conflict on constraint <constraint name>
...