oracle序列

来源:互联网 发布:淘宝模特短发红人 编辑:程序博客网 时间:2024/09/21 09:18

一、序列

             是oacle提供的用于产生一系列唯一数字的数据库对象。

            1) 自动提供唯一的数值

            2)共享对象

            3)  主要用于提供主键值

            4) 将序列值装入内存可以提高访问效率

二、创建序列

          1)要有创建序列的权限 create sequence 或 create any sequence

          2)  创建序列的语法


CREATE SEQUENCE sequence  //创建序列名称

       [INCREMENT BY n]  //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1

       [START WITH n]    //开始的值,递增默认是minvalue 递减是maxvalue

       [{MAXVALUE n | NOMAXVALUE}] //最大值

       [{MINVALUE n | NOMINVALUE}] //最小值

       [{CYCLE | NOCYCLE}] //循环/不循环

       [{CACHE n | NOCACHE}];//分配并存入到内存中

------------------------------------------------------------------------------------------------

举例1:

CREATE SEQUENCE seq_test_01  
     INCREMENT BY 1   -- 每次加几个  
     START WITH 1     -- 从1开始计数  
     NOMAXVALUE       -- 不设置最大值  
     NOCYCLE          -- 一直累加,不循环  
     CACHE 10;  

------------------------------------------------------------------------------------------------

三、使用序列

            NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用

            CURRVAL 中存放序列的当前值

            NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效

          1)下一个有效值
                 select seq_test_01.nextval from dual;

          2)当前值
                 select seq_test_01.currval from dual;

          3)向表插入数据时直接使用

                 insert into t_test_01(fid,month,create_date)values(seq_test_01.nextval,'01',sysdate);


四、查询序列

         1)查询当前用户下所有序列
                a)select * from user_sequences;

                b)SELECT T.OBJECT_NAME FROM USER_OBJECTS T WHERE T.OBJECT_TYPE='SEQUENCE' ;

         

五、删除序列

        drop sequence seq_test_01;


------------------------------------------------------------------------------------------------

原文地址:http://blog.csdn.net/java958199586/article/details/7360152

------------------------------------------------------------------------------------------------