美文网首页我爱编程
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