何时在交易写作中评估NextVal



如果我在Postgres中有一个序列'foo',并且执行以下操作:

begin;
insert into ... values (nextval('foo'));
commit;

nextval是否在commit上评估?换句话说,如果我只写这样的列写信,它会单调增加,还是在那里有种族?

文档非常清楚地表明,序列是非交易的,但不是可以用来以这种方式订购的序列。

如果是,那呢?

begin;
select nextval('foo'); -- save the value
insert into ... values (<saved value>);
commit;

nextval立即执行。即使有几个语句同时在同一序列上调用它, nextval的每个呼叫都可以保证返回一个唯一的数字。

序列没有任何问题!

最新更新