度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 885|回复: 2
打印 上一主题 下一主题

[分享] Oracle序列sequence用法总结

[复制链接]

348

主题

3572

帖子

9335

积分

论坛元老

Rank: 8Rank: 8

积分
9335
跳转到指定楼层
楼主
发表于 2020-4-30 22:39:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

oracle数据库中序列的使用非常普遍,尤其是在给表中建立编码用作主键的时候,本文总结下有关oracle数据库中序列的知识。

1、创建序列

CREATE SEQUENCE 序列名

[INCREMENT BY n]

[START WITH n]

[{MAXVALUE/MINVALUE n|NOMAXVALUE/NOMINVALUE}]

[{CYCLE|NOCYCLE}]

[{CACHE n|NOCACHE}];

上面是创建序列的基本语法,注意各个属性之间不用加逗号,下面详细的介绍其中的意义:

(1)increment:表示步长,即每次增长的长度,若省略,则默认为1;若为负值,则表示是以此步长递减。

(2)start with:序列的第一个值,即初始值,默认为1。

(3)maxvalue:序列生成器产生的最大值,选项nomaxvalue为默认值,表示没有最大值限制。此时,对于递增序列,最大值是10的27次方;对于递减序列,最大值-1。

(4)minvalue:序列生成器产生的最小值,选项nominvalue为默认值,表示没有最小值限制。此时,对于递减序列,最小值是-10的26次方;对于递增序列,最小值是1。

(5)cycle和nocycle:表示当序列生成器的值达到限制后是否循环,如果循环,当序列增到最大值时,循环到最小值;当序列递减到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值会发生错误。

(6)cache:定义存放序列的内存块的大小,默认为20。nocache表示不对序列进行内存缓冲,对序列进行内存缓冲,可以改善序列的性能。如果设置了cache,那么oracle就可以预先在内存中放置一些序列,这样存取就会快些;缓存里面的取完后,oracle自动再取一组序列到缓存中。使用cache或许会跳号,比如数据库突然不正常了,缓存中的序列就会丢失,这时候就有重新取序列导致跳号,所以可在创建序列的时候用nocache防止这种情况。

2、使用序列

定义好序列以后,通过currval取得当前序列值,nextval取得下一个值。

3、更改序列

使用alter来修改序列,比如:


  1. ALTER SEQUENCE test_seq
  2. INCREMENT BY 20
  3. MAXVALUE 999999
  4. NOCACHE NOCYCLE;
复制代码

4、删除序列

使用drop来删除序列,比如:

  1. DROP SEQUENCE test_seq;
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
沙发
发表于 2020-5-1 14:07:38 | 只看该作者
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
板凳
发表于 2020-5-1 14:08:30 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-28 16:46 , Processed in 0.125695 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表