oracle - Oracle 序列的 MAXVALUE 的用途是什么?

标签 oracle sequence

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 要么未使用,要么设置为任意高值,该值似乎高到永远无法达到。

不过,MINVALUEMAXVALUECYCLE 的组合是有意义的,但它是在野外发现的,即有人真的使用它?

最佳答案

它是 2003 SQL 标准的一部分,因此它并不是真正的 Oracle 特定问题。

我主要希望 MAXVALUE 与 CYCLE 一起使用,但可能需要额外的干预(例如更改代码以切换前缀),因此您不希望它自动循环。

可能存在物理限制(例如,值必须适合 6 位数字)或转换强加的限制(例如,必须适合两个字节)。每当我使用具有这种限制的系统时,我们都会避免序列,因为我们不希望任何未使用的数字因缓存、失败的交易等而浪费。

关于oracle - Oracle 序列的 MAXVALUE 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50550727/

相关文章:

oracle - 是否可以从另一个调用 oracle 对象类型构造函数?

regex - Kotlin:如何获取匹配的第一行的捕获组?

scala - 附加可选元素列表

c - 斐波那契数列错误 C

oracle - 奇怪的 PL/SQL 错误 - PLS-00103

sql - Oracle 排序替换变量

sql - 使用 sum() 将所有具有时间类型的值相加

java - 在 Statement 和 ResultSet 上设置提取大小之间的区别

r - 创建不同长度的序列序列

kotlin - Kotlin在Array中加入asSequence()的好处