我有一个表,其中有column 1,column 2,column 3和column 4。主键是(column 1,column 2,column 3)。
当我尝试执行“UPDATE public.table SET column 1 = value_x;”时,我得到:
错误:重复键值违反唯一约束“pk_table“错误IL:Key(column 1,column 2,column 3)=(value_x,value_y,value_z)已存在。
但是当我执行“SELECT * FROM table WHERE column 1 = value_x;”时,我得到0个结果。所以从逻辑上讲,导致错误的主键不存在。
有谁知道为什么我得到这个错误?谢谢
PS:我在PostGres。
1条答案
按热度按时间s2j5cfk01#
你有一个3列组合的p_key,如果你使用update语句,它会在整个表中更新,在某个点上,column1,2,3的组合变得相同,导致p_key违规,因此抛出错误。