Oracle中的序列 sequence 用法
sybase 同埋sqlserver 系冇序列呢样野的。
但系oralce有。
oralce 序列简单d来讲类似于sybase的递增列的机制, 但是sybase 一张表只允许1个递增列, 而oracle没有这个限制,可以分别为一张表的若干个列指定不同的序列。
而且同1个序列可以由各个用户用在不同的表~
创建序列语法:
CREATE SEQUENCE sequence_name
[INCREMENT BY n] --递增的间隔,如果该句省略,默认是+1
[START WITH n] --起始的值,如果该句省略,默认是1
[{MAXVALUE n | NOMAXVALUE}] --最大值,极限是10的27次方
[{MINVALUE n | NOMINVALUE}] --最小值,极限是-10的26次方
[{CYCLE | NOCYCLE}] --到达最大或最小值后是否循环,默认是不循环
[{CACHE n | NOCACHE}]; --指定 Oracle 服务器预先分配多少值,并且保持在内存中(默认
情况下,Oracle 服务器缓冲 20 个值,如果序列值被高速缓冲,如果系统故障它们将被丢失.
例如创建1个列, 用于表Dep_1 的主键。
跟住可以用下满语句来查看这个序列的属性。
select * from user_sequences where lower(sequence_name) = 'dep_1_id_sq'
上图last_number 表示下1个可用序列号。
用这条语句来获得当前序列号码:
select dep_1_id_sq.currval from dual;
用这条语句来获得当前下一个号码:
select dep_1_id_sq.nextval from dual;
注:dep_1_id_sq.nextval 每被引用1次,例如上面的语句执行1此,序列号+1,也就是说上面语句每次返回的结果都比上一次加1。
使用序列:
如我要插入1条新数据到表dep_1, 可以用序列获得1个未被使用过的新key值。
insert into dep_1
select dep_1_id_sq.nextval,'ma',null from dual;
然后可以用
select dep_1_id_sq.currval from dual;
来或得这条数据的key值.
但系oralce有。
oralce 序列简单d来讲类似于sybase的递增列的机制, 但是sybase 一张表只允许1个递增列, 而oracle没有这个限制,可以分别为一张表的若干个列指定不同的序列。
而且同1个序列可以由各个用户用在不同的表~
创建序列语法:
CREATE SEQUENCE sequence_name
[INCREMENT BY n] --递增的间隔,如果该句省略,默认是+1
[START WITH n] --起始的值,如果该句省略,默认是1
[{MAXVALUE n | NOMAXVALUE}] --最大值,极限是10的27次方
[{MINVALUE n | NOMINVALUE}] --最小值,极限是-10的26次方
[{CYCLE | NOCYCLE}] --到达最大或最小值后是否循环,默认是不循环
[{CACHE n | NOCACHE}]; --指定 Oracle 服务器预先分配多少值,并且保持在内存中(默认
情况下,Oracle 服务器缓冲 20 个值,如果序列值被高速缓冲,如果系统故障它们将被丢失.
例如创建1个列, 用于表Dep_1 的主键。
Create sequence Dep_1_id_sq
increment by 1
start with 100
maxvalue 9999
跟住可以用下满语句来查看这个序列的属性。
select * from user_sequences where lower(sequence_name) = 'dep_1_id_sq'
上图last_number 表示下1个可用序列号。
用这条语句来获得当前序列号码:
select dep_1_id_sq.currval from dual;
用这条语句来获得当前下一个号码:
select dep_1_id_sq.nextval from dual;
注:dep_1_id_sq.nextval 每被引用1次,例如上面的语句执行1此,序列号+1,也就是说上面语句每次返回的结果都比上一次加1。
使用序列:
如我要插入1条新数据到表dep_1, 可以用序列获得1个未被使用过的新key值。
insert into dep_1
select dep_1_id_sq.nextval,'ma',null from dual;
然后可以用
select dep_1_id_sq.currval from dual;
来或得这条数据的key值.