CREATE SEQUENCE demo_seq
START WITH 1
INCREMENT BY 3
MINVALUE 1
MAXVALUE 14
CYCLE
CACHE (?);
根据公式,即
(CEIL(MAXVALUE-MINVALUE))/ABS(INCREMENT)
所以,
(CEIL(14-1))/ABS(3)
该值为4.33 那么上面的序列4或5的CACHE值是多少。
答案 0 :(得分:1)
您已采用该公式from the documentaion:
<强> CACHE 强>
指定数据库预分配的序列值的数量,并保留在内存中以便更快地访问。该整数值可以有28个或更少的数字。此参数的最小值为2.对于循环的序列,此值必须小于循环中的值的数量。您不能缓存超过给定循环序列号的值。因此,CACHE
允许的最大值必须小于以下公式确定的值:(CEIL (MAXVALUE - MINVALUE)) / ABS (INCREMENT)
你好像错过了#34;必须小于&#34;该段的一部分。所以在你的例子中,缓存必须小于4.333;因此必须是4 - 至少根据文件。 Oracle实际上允许您将缓存设置为5;它只抱怨大约6或以上:
CREATE SEQUENCE demo_seq
START WITH 1
INCREMENT BY 3
MINVALUE 1
MAXVALUE 14
CYCLE
CACHE 5;
Sequence DEMO_SEQ created.
drop sequence demo_seq;
Sequence DEMO_SEQ dropped.
CREATE SEQUENCE demo_seq
START WITH 1
INCREMENT BY 3
MINVALUE 1
MAXVALUE 14
CYCLE
CACHE 6;
ORA-04013: number to CACHE must be less than one cycle
...所以看起来像文档错误。