PostgreSQL:更新主键,避免冲突

时间:2016-12-06 09:56:42

标签: sql postgresql sql-update

我想更新表的多行中的主键。如果所有行都已更新,则密钥将再次唯一,但第一行的更新会导致与第二行的密钥发生临时冲突。有没有一种优雅的方法来解决这个问题?

示例:

create table erichtest ( i integer, v varchar(200) );
alter table erichtest add constraint pk_erichtest primary key(i);
insert into erichtest values(1, 'Eins');
insert into erichtest values(2, 'Zwei');
update erichtest set i=i+1;
  

错误:重复键值违反了唯一约束“pk_erichtest”

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

添加10减9:

update erichtest set i=i+10;
update erichtest set i=i-9;