Advertisement

Oracle自增序列

阅读量:

简介

什么是序列:

复制代码
    序列是一数据库对象,利用它可生成唯一的整数。一般使用序列自动地生成主码值。一个序列的值是由特别的Oracle程序自动生成,因而序列避免了在运用层实现序列而引起的性能瓶颈。
    
    
      
    
    AI写代码

SQL如下(示例):

复制代码
    CREATE sequence seq_tableName
    increment BY 1        
    START WITH 1 
    MAXVALUE 99999999
    minvalue 1
    cycle
    nocache;
    
    
      
      
      
      
      
      
      
    
    AI写代码

参数说明:

复制代码
    increment by:指定序列之间的间隔,该值可为(正或负)的整数,不可为0,序列为升序,忽略该值,缺省值为1
    start with:指定生成的第一个序列号,升序时序列从比最小值大的开始,缺省值为序列最小值.降序时:序列可由最大值小的值开始,缺省值为序列的最大值.
    maxvalue:指定序列可生成的最大值
    minvalue:指定序列可生成得最小值
    cycle,nocycle:表序列生成器达到限制值后是否循环.cycle循环,当递增到最大值时,循环到最小值;对于递减序列达到最小值,循环到最大值;nocycle不循环:达到限制值后,继续会发生错误.
    cache,nocache:是否缓冲,cache:定义存放序列的内存的大小,默认为20..对序列进行内存缓冲改善序列的性能.
    
    
      
      
      
      
      
      
    
    AI写代码

SQL例句

复制代码
     创建测试表-----
     create table test(
     id   NUMBER(20) not null,
     name VARCHAR2(30) 
     )
     创建序列-----
     CREATE sequence seq_test
     increment BY 1        
     START WITH 1 
     MAXVALUE 99999999
     minvalue 1
     cycle
     nocache;
     获取序列的自增id--(nextval:每次获取的不同的sequence值,根据increment增量,序列增加
                   currval:获得当前指向的sequence值,只执行currval,不会因执行次数而改变)
     select seq_test.nextval from dual; 
     select seq_test.currval from dual;
     删除序列----
     drop sequence seq_test;
     更改序列----
     alter sequence seq_test increment BY 2 MAXVALUE 888888;
     调用序列插入----
     inset into test(id,name) values(seq_test.nextval,'姓名');
     查询当前用户的所有序列----
     select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences where sequence_owner='用户名';
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码

总结

提示:这里对文章进行总结:

全部评论 (0)

还没有任何评论哟~