【Oracle学习笔记】序列

Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方,一般结合触发器使用。

Sequence是数据库系统的特性,有的数据库有Sequence,有的没有。比如Oracle、DB2、PostgreSQL数据库有Sequence,MySQL、SQL Server、Sybase等数据库没有Sequence。

Sequence是数据中一个特殊存放等差数列的表,该表受数据库系统控制,任何时候数据库系统都可以根据当前记录数大小加上步长来获取到该表下一条记录应该是多少,这个表没有实际意义,常常用来做主键用。

1.   创建

1.1 要求

首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。

1.2 语法

复制代码
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.3 示例

复制代码
 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; --取当前序列值
View Code
复制代码

2.   修改

2.1 语法

复制代码
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}];//分配并存入到内存中
复制代码

2.2 注意事项

(1)必须是序列的拥有者或对序列有 ALTER 权限

(2)只有将来的序列值会被改变

(3)改变序列的初始值只能通过删除序列之后重建序列的方法实现

三、删除

使用DROP SEQUENCE 语句删除序列,删除之后,序列不能再次被引用。

posted @   yscit  阅读(338)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示