如果我在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
的每个呼叫都可以保证返回一个唯一的数字。
序列没有任何问题!