Oracle序列sequence

来源:互联网 发布:雅马哈yv100ii编程界面 编辑:程序博客网 时间:2024/04/29 00:09
 

1、 序列

/*序列(sequence)是一种数据库项,它生成一个整数序列.序列所生成的整数通常可以用来填充数字类型的主键值。*/

--创建序列

/*CREATE SEQUENCE sequence_name

           [START WITH start_num]

           [INCREMENT BY increment_num]

           [ { MAXVALUE maximum_num | NOMAXVALUE } ]

           [ { MINVALUE mininum_num | NOMINVALUE } ]

           [ { CYCLE | NOCYCLE }]

           [ { CACHE cache_num | NOCACHE}]

           [ { ORDER | NOORDER }]

 */

 --省略可选参数,意味着起始数字和增量都被设置为默认值。

 CREATE SEQUENCE test_seq;

 --指定了可选参数

 CREATE SEQUENCE test_seq1

        START WITH 10

        INCREMENT BY 5

        MINVALUE 10

        MAXVALUE 20

        CYCLE

        CACHE 2

        ORDER;

--获取有关序列信息

select * from user_sequences where sequence_name='test_seq1'

--使用序列

/*序列生成一系列数字。一个序列中包含两个"伪列",分别是currval和nextval,可以分别用来获取该序列的当前值和下一个值;

        在检索序列的当前值之前,必须通过检索序列的下一个值对序列进行初始化。*/

        select test_seq1.nextval from dual;

        select test_seq1.currval from dual;

       

--使用序列填充主键

create table t_order_status2(

            id INTEGER constraint fk_order_status2_id primary key,

            status varchar2(10),

            last_modified date default sysdate

);

--创建序列

/*在使用序列填充主键时,通常应该使用nocache选项,这样可以避免序列产生不连续的情况。序列不连接的情况这所以会发生,是因为在关闭数据库时,所

        缓存的值全部丢失了.

        */

create sequence order_status2_seq nocache;

      

insert into t_order_status2 (id,status,last_modified) values(order_status2_seq,'PLACED',sysdate);

      

--修改序列

alter sequence order_status2_seq

increment by 2;

--删除序列

drop sequence order_status2_seq;