documentation很清楚:
MAXVALUE
:指定序列可以生成的最大值。
错误信息也很清楚:
CREATE SEQUENCE smax START WITH 1 MAXVALUE 2;
SELECT smax.nextval FROM dual;
1
SELECT smax.nextval FROM dual;
2
SELECT smax.nextval FROM dual;
ORA-08004: SEQUENCE SMAX.NEXTVAL exceeds MAXVALUE and cannot be instantiated
但是,MAXVALUE
的目的 是什么?有没有人将它用于生产目的?在我见过的许多序列中,MAXVALUE
要么未使用,要么设置为任意高值,该值似乎高到永远无法达到。
不过,MINVALUE
、MAXVALUE
和 CYCLE
的组合是有意义的,但它是在野外发现的,即有人真的使用它?
最佳答案
它是 2003 SQL 标准的一部分,因此它并不是真正的 Oracle 特定问题。
我主要希望 MAXVALUE 与 CYCLE 一起使用,但可能需要额外的干预(例如更改代码以切换前缀),因此您不希望它自动循环。
可能存在物理限制(例如,值必须适合 6 位数字)或转换强加的限制(例如,必须适合两个字节)。每当我使用具有这种限制的系统时,我们都会避免序列,因为我们不希望任何未使用的数字因缓存、失败的交易等而浪费。
关于oracle - Oracle 序列的 MAXVALUE 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50550727/