Oracle 序列(Sequence)主要用于生成流水号,Oracle EBS系统中是经常用到的。但是,有时需要修改序列初始值(START WITH)时,好多人凭感觉认为:Alter Sequence SequenceName Start With N。事实上,在Oracle Db中,修改序列没有这样的语法。没有这样的语法情况怎么办,有二种方法可以完成
1.先删除序列,然后重新创建。不过这不是当前要讲的重点。这个方法比较方便。
2.通过Increment By来实现修改初始值。
例如:若序列名称是SeqTest2010_S,初始值是13,而现在要设置初始值为1020,Increment By值为:1007(1020-13)
2.1 执行:Alter Sequence SeqTest2010_S Increment By 1007;
2.2 执行:Select SeqTest2010_S.NextVal From Dual;
2.3 执行:Alter Sequence SeqTest2010_S Increment By 1;
修改完成。简单吧
转自:http://blog.csdn.net/chenxianping/article/details/5811117
相关推荐
这里,`seq_name`是序列名,`START WITH`指定初始值,`INCREMENT BY`设置每次自增的数值,`MINVALUE`和`MAXVALUE`设定序列值的上下限,`CYCLE`选项表示当序列值超出范围时重新开始。 批量修改序列值通常涉及到ALTER...
EXECUTE IMMEDIATE 'CREATE SEQUENCE ' || cur.sequence_name || ' START WITH ' || max1; END LOOP; END; / ``` 此块的功能是: - 遍历所有与主键约束关联的Sequence; - 调用`func_getseq`函数获取每个表的最大...
- 第一次使用`NEXTVAL`时,返回的是`START WITH`指定的初始值,之后每次调用都会自动增加`INCREMENT BY`的值。 - `CURRVAL`在首次调用`NEXTVAL`之后才能使用,否则会导致`ORA-08004: CURRVAL of sequence 'seq_...
创建一个名为`SEQ_TEST`的序列,初始值为1,每次递增1,无最大值限制,不循环,不缓存。 ```sql CREATE SEQUENCE SEQ_TEST MINVALUE 1 NOMAXVALUE START WITH 1 INCREMENT BY 1 NOCYCLE NOCACHE; ``` #### 三、...
- `START WITH` 指定序列的初始值。 - `INCREMENT BY` 设置每次生成新值时增加的数值。 - `MINVALUE` 和 `MAXVALUE` 定义了序列值的范围。 - `CYCLE` 表示当达到最大值时,序列会重新从最小值开始;`NOCYCLE` 则表示...
1. **第一次NEXTVAL**:首次调用`NEXTVAL`返回初始值;之后的调用会根据定义的`INCREMENT BY`值递增并返回新值。 2. **CURRVAL的使用**:必须先调用一次`NEXTVAL`才能使用`CURRVAL`,否则会出错。 3. **CACHE的影响*...
- `START WITH n` 指定序列的初始值,默认值取决于`MINVALUE`和`MAXVALUE`的设置。 - `MAXVALUE n` 设置序列的最大值,`NOMAXVALUE`表示无最大值限制(升序时默认为1027,降序时为-1)。 - `MINVALUE n` 设置序列...
- **START WITH**:设定序列的初始值,默认为1。 - **MAXVALUE / MINVALUE**:设定序列的最大或最小值。若未设定,则递增序列默认最大值为10的27次方,递减序列默认最小值为-10的26次方。 - **CYCLE / NOCYCLE**:...
1. **首次 NEXTVAL 的值**:首次调用 `NEXTVAL` 会返回序列的初始值。 2. **CURRVAL 的使用**:必须先调用 `NEXTVAL` 才能使用 `CURRVAL`。 3. **多次 NEXTVAL**:在同一语句中多次调用 `NEXTVAL` 会得到不同的值。 ...
- 起始值(`START WITH`)设置为1,即序列的初始值是1。 - 增量(`INCREMENT BY`)设置为1,表示序列的每个新值比前一个值多1。 - 缓存大小(`CACHE`)设置为20,意味着数据库服务器将预先分配20个序列值并将其缓存...
`START WITH 1495`则指定了序列的初始值为1495。可以根据具体需求调整这些参数。 #### 二、查看序列信息(Query Sequence Information) 在Oracle数据库中,可以通过查询`USER_SEQUENCES`视图来获取关于序列的详细...
假设我们需要创建一个名为`EXAM_NO_SEQ`的序列,其初始值为1484,最大值为9999999999,最小值为1,并且当达到最大值后会循环回到最小值。此外,为了提高性能,我们还设置了缓存大小为20,不指定顺序: ```sql ...
- **START WITH**:指定 `Sequence` 的初始值。 - **NOMAXVALUE**:表示 `Sequence` 可以生成的最大值是无穷大。 - **NOCYCLE**:表示 `Sequence` 的值达到最大或最小后不会循环。 - **NOCACHE**:表示不缓存 `...
START WITH 1 -- 序列的初始值 NOMAXVALUE -- 没有最大值限制 NOCYCLE -- 达到最大值后不再循环 CACHE 10; -- 缓存10个值 ``` 在这个例子中,`emp_sequence`是一个序列,每次调用`NEXTVAL`时,它的值会自动增加1,...
你可以根据需求调整序列的初始值、增量、最大值和最小值等参数。 三、使用Oracle序列 1. 在SQL插入语句中使用NEXTVAL 在插入新记录时,可以直接引用序列的NEXTVAL,它会返回序列的下一个值。例如: ```sql INSERT ...
- `start_value`:序列的初始值。 - `increment_value`:每次递增的值。 - `min_value` 和 `max_value`:设定序列值的范围。 - `CYCLE` 或 `NOCYCLE`:当达到最大值时是否重新开始(循环)或停止(不循环)。 - `...
- **START WITH n**:指定序列起始值,默认为1。 - **MINVALUE n** / **MAXVALUE n**:设置序列可生成的最小值和最大值。 - **CYCLE** | **NOCYCLE**:当序列达到最大值后是否循环,默认为NOCYCLE,即达到最大值后...
START WITH 1 -- 指定序列的初始值 INCREMENT BY 1 -- 指定每次递增的数值,这里为1 MINVALUE 1 -- 可选,设置序列的最小值 MAXVALUE 9999999999 -- 可选,设置序列的最大值 NOCYCLE -- 可选,当达到最大值时不...
这条语句创建了一个名为“TEST_SEQUENCE”的序列,该序列的初始值为1,每次递增1,无最大值限制,并且不进行循环。同时,它没有缓存任何值,因此每次调用时都会直接从数据库中获取下一个可用的序列值。 #### 触发器...
5. start with:序列的初始值,默认为minvalue。 6. cache:缓存大小,默认为20,表示一次生成并缓存20个值,提高性能。 7. order/noorder:是否保证按顺序分配值,noorder默认,多用户并发时可能不按顺序。 8. ...