gpt4 book ai didi

postgresql - 序列不受事务影响?

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

我有一张 table

create table testtable(
testtable_rid serial not null,
data integer not null,
constraint pk_testtable primary key(testtable_rid)
);

假设我执行这段代码大约 20 次:

begin;
insert into testtable (data) values (0);
rollback;

然后我做

begin;
insert into testtable (data) values (0);
commit;

最后一个

select * from testtable
Result:row0: testtable_rid=21 | data=0Expected result:row0: testtable_rid=1 | data=0

如您所见,序列似乎不受事务回滚的影响。它们继续递增,就好像事务已提交,然后该行已被删除。有什么方法可以防止序列以这种方式运行吗?

最佳答案

回滚序列不是一个好主意。想象一下同时发生两个交易,每个交易都使用序列作为唯一 ID。如果第二个事务提交并且第一个事务回滚,则第二个事务插入带有“2”的行,而第一个事务将序列回滚到“1”。

如果再次使用该序列,序列的值将变为“2”,这可能会导致唯一约束问题。

关于postgresql - 序列不受事务影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095917/

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