第 4 章 数据库对象
- 4 -
例 4:
SQL> CREATE SEQUENCE toys_seq
START WITH 10
INCREMENT BY 10
MAXVALUE 2000
MINVALUE 10
NOCYCLE
CACHE 10;
3.1 访问序列
创建了序列之后,可以通过 CURRVAL 和 NEXTVAL 伪列来访问该序列的值。可以从伪列中选择值,
但是不能操作它们的值。下面分别说民 NEXTVAL 和 CURRVAL。
NEXTVAL 返回序列的下一个值。创建序列后第一次使用 NEXTVAL 时,将返回该序列的初始值。
以后在引用 NEXTVAL 时,将使用 INCREAMENT BY 子句的值来增加序列值,并返回这个新值。
CURRVAL 返回序列的当前值。即最后一次引用 NEXTVAL 时返回的值。
例 5 演示序列的用法。
例 5:
SQL>INSERT INTO toys(toyid,toyname,toyprice)
values('p'||toys_seq.NEXTVAL,'TWENTY',25);
SQL> INSERT INTO toys(toyid,toyname,toyprice)
values('p'||toys_seq.NEXTVAL,'MAGIC PENCIL',75);
上述语句从序列 toys_seq 中选择值插入 toys 表中的 toyid 列。执行成功将会在该表的 toyid
列插入值"P10"和"P12"。
例 6 演示如何查看序列当前值
例 6:
Select toys_seq.CURRVAL from dual;
上述语句将显示序列的 CURRVAL 值为 12
3.2 更改序列
ALTER SEQUENCE 命令用于修改序列的定义。如果执行下列操作,则会修改序列。
设置或删除 MINVALUE 或 MAXVALUE
修改增量值
修改缓存中的序列号的数目。
修改序列语法如下:
ALTER SEQUENCE [schema.]sequence_name
[INCREMENT BY integer]
[MAXVALUE integer|NOMAXVALUE]
[MINVALUE integer|NOMINVALUE]
[CYCLE|NOCYCLE]
[CACHE interger|NOCACHE];
注意,不能修改序列的 START WITH 参数。在修改序列时,应注意升序序列的最小值应小于最大值。
例 7 演示如何更改序列。
例 7:
SQL> ALTER SEQUENCE toys_seq