美文网首页我爱编程
oracle自增序列(无触发器版实现)

oracle自增序列(无触发器版实现)

作者: Specime | 来源:发表于2018-03-22 23:38 被阅读0次

    1、创建

    CREATE SEQUENCE oracle_sequence  -- 创建名为:oracle_sequence 的序列
    INCREMENT BY 1   -- 如果省略,则默认为1,如果负值,则代表序列的值是按照此步长递减的。 
    START WITH 1       -- 从1开始计数  
    NOMAXVALUE        -- 不设置最大值  
    NOCYCLE               -- 一直累加,不循环  
    CACHE 20;  -- CACHE(缓冲)定义存放序列的内存块的大小,默认为20。
    

    2、修改

    ALTER SEQUENCE 序列名
      [INCREMENT BY n]
      [{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
      [{CYCLE|NOCYCLE}]
      [{CACHE n|NOCACHE}];
    
    不能修改序列的初始值
    

    3、删除

    DROP SEQUENCE 序列名;
    

    4、查看所有序列

    select SEQUENCE_NAME from dba_sequences;
    
    select * from USER_SEQUENCES  //查询所有
    

    5、特点

    1. 是oacle提供的用于产生一系列唯一数字的数据库对象
    2. 自动提供唯一的数值
    3. 共享对象
    4. 主要用于提供主键值
    5. 将序列值装入内存可以提高访问效率

    6、使用

    insert into table(num1,num2) values(自增序列名.nextval,’value2’);  //nextval为自增后的值
    

    7、注意事项

    第一次nextval返回的是初始值;随后的nextval会自动增加你定义的INCREMENT BY值,然后返回增加后的值。currval 总是返回当前SEQUENCE的值,但是在第一次nextval初始化之后才能使用currval,否则会出错。一次nextval会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个nextval,其值就是不一样的

    相关文章

      网友评论

        本文标题:oracle自增序列(无触发器版实现)

        本文链接:https://www.haomeiwen.com/subject/ajttcftx.html