Oracle提供了sequence对象,由系统提供自增加的序列号,一般用于生成数据库数据记录的自增加主键或序号的地方,通常结合触发器使用。数据库
Sequence是数据库系统的特性,有的数据库有Sequence,有的没有。好比Oracle、DB二、PostgreSQL数据库有Sequence,MySQL、SQL Server、Sybase等数据库没有Sequence。ide
Sequence是数据中一个特殊存放等差数列的表,该表受数据库系统控制,任什么时候候数据库系统均可以根据当前记录数大小加上步长来获取到该表下一条记录应该是多少,这个表没有实际意义,经常用来作主键用。spa
首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。code
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 LOCATIONS_SEQ 2 3 INCREMENT BY 1 4 5 START WITH 1 6 7 MAXVALUE 9900 8 9 MINVALUE 1 10 11 CACHE 2; 12 13 SELECT LOCATIONS_SEQ.nextval FROM DUAL; --取下一个序列值 14 15 SELECT LOCATIONS_SEQ.currval FROM DUAL; --取当前序列值
alter 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)必须是序列的拥有者或对序列有 ALTER 权限对象
(2)只有未来的序列值会被改变blog
(3)改变序列的初始值只能经过删除序列以后重建序列的方法实现内存
使用DROP SEQUENCE 语句删除序列,删除以后,序列不能再次被引用。event