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

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,其值就是不一样的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容