私はテーブルを持っています
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
結果: 行0: testtable_rid=21 | データ=0 期待される結果: 行0: testtable_rid=1 | データ=0
ご覧のとおり、シーケンスはトランザクション ロールバックの影響を受けていないようです。トランザクションがコミットされてから行が削除されたかのように、それらは増加し続けます。シーケンスがこのように動作するのを防ぐ方法はありますか?