gpt4 book ai didi

sql - PostgreSQL:更新主键,避免冲突

转载 作者:行者123 更新时间:2023-11-29 11:41:24 24 4
gpt4 key购买 nike

我想更新表中多行的主键。如果所有行都被更新,键将再次是唯一的,但是第一行的更新导致与第二行的键暂时冲突。有什么优雅的方法可以解决这个问题吗?

例子:

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;

ERROR: duplicate key value violates unique constraint "pk_erichtest"

最佳答案

Something like this should help :

b=# begin;
BEGIN
b=# alter table erichtest drop constraint pk_erichtest ;
ALTER TABLE
b=# alter table erichtest add constraint pk_erichtest primary key (i) DEFERRABLE INITIALLY IMMEDIATE;
ALTER TABLE
b=# set constraints pk_erichtest deferred ;
SET CONSTRAINTS
b=# update erichtest set i=i+1;
UPDATE 2
b=# select * from erichtest ;
i | v
---+------
2 | Eins
3 | Zwei
(2 rows)

b=# end;
COMMIT

关于sql - PostgreSQL:更新主键,避免冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40992455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com