Postgres SERIAL 列自动提交间隙

Postgres SERIAL column Autocommit gap

如果我有 table:

CREATE TABLE table_name(
    id SERIAL
);

我插入了以下 ID:..., 68, 69。

然后我有 2 个并且我必须并行竞争事务 (T1, T2) 运行。我知道交易首先完成可能会获得更高的数字,因为在交易提交之前分配并写入 WAL 中的 id。

T1 (Take Number = 70), T2 (Take number = 71), T2 (Commit), T1(Commit)

AUTOCOMMIT 时的情况(在事务外插入行时)。 而且我必须非常接近插入是否保证第一个插入的行的编号较小?

用例如下: 插入行后,我将执行 SELECT id FROM table_name ORDER BY id。难道我一次又一次地执行这个命令两次,然后得到以下结果:

Select 1 个结果:68,69,71

Select 2 结果:68,69,70,71

即使不使用显式事务,也不能保证获得较低序列值的语句也会先提交。