Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方.

Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方.

下面介绍一下关于sequence 的生成,修改,删除等常用的操作:

1. 创建 Sequence

使用如下命令新建sequence(用户需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE权限):

CREATE SEQUENCE test_sequence

INCREMENT BY 1   -- 每次加的个数据

START WITH 1    -- 从1开始计数

NOMAXVALUE    -- 不设置最大值

NOCYCLE      -- 一直累加,不循环

CACHE 10 ;

[注意]

如果设置了CACHE值,ORACLE将在内存里预先放置一些sequence,以使存取速度更快。cache里面的取完后,oracle自动再取一组到cache。 但是,使用cache可能会跳号, 当遇到数据库突然异常down掉(shutdown abort),cache中的sequence就会丢失.

因此,推荐在create sequence的时候使用 nocache 选项。

2. 使用 sequence:

sequence.CURRVAL -- 返回 sequence的当前值

sequence.NEXTVAL -- 增加sequence的值,然后返回 sequence 值

[注意]

第一次NEXTVAL返回的是初始值;

随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。

CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,,否则会出错。

一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。

sequence 存储在数据字典中,存储于user_sequences表

LAST_NUMBER 为最终序列号,也就是sequence游标当前所在的位置。

//get sequence last_number

SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME=TEST_SEQNAME

// NEXTVAL 使游标指向下一位(增一或减一)

SELECT SEQNAME.NEXTVAL FROM USER_SEQUENCES 得到下一位游标的值

3. 修改 Sequence

用户必须拥有ALTER ANY SEQUENCE 权限才能修改sequence. 可以alter除start至以外的所有sequence参数.

如果想要改变start值,必须 drop sequence 再 re-create.

命令格式如下:

ALTER SEQUENCE test_sequence

INCREMENT BY 10

MAXVALUE 10000

CYCLE    -- 到10000后从头开始

NOCACHE ;

4. 删除 Sequence

DROP SEQUENCE order_seq;

更多Oracle相关信息见Oracle 专题页面 ?tid=12

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

oracle删sequen,Oracle中如何创建使用SEQUENCES相关推荐

  1. oracle 建一个自增序列,Oracle中如何创建使用SEQUENCES自增序列

    Oracle中如何创建使用SEQUENCES Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方. 下面介绍一下关于sequence ...

  2. oracle删sequ_[oracle package]sequence处理(批量创建、删除sequence,将sequence恢复至指定值)...

    之前对于oracle的包不太熟悉,最近深入学习了plsql中的包.在做项目过程中,操作数据库时,存在大量重复的工作,正好写个package来巩固下所学. 一.先对写的东西碰到的问题作下说明,也方便以后 ...

  3. oracle 删序列,oracle创建和删除序列

    |NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}]; START WITH:定义序列的初始值(即产生的第一个值),默认为1. INCREMENT:用 ...

  4. php oracle 操作 sql语句中能不能添加数组_如何在PHP中使用Oracle数据库_php

    在php3.0以上版本中,php内置了几乎目前所有的数据库处理函数,包括oracle;在本文中我们通过一个实例来介绍了如何使用这些函数来操作Oracle数据库. PHP提供了2大类API(应用程序接口 ...

  5. oracle数据库zenm怎么创建连接,oracle10g中怎么创建数据库连接

    Oracle 10G手工创建数据库 收藏 在Oracle中建库,通常有两种方法.一是使用Oracle的建库工 且DBCA,这是一个图形界面工且,使用起来方便且很容易理解,因为它的界面友好.美观,而且提 ...

  6. Oracle中默认创建的表

    安装Oracle数据库后,会自动创建几个表.分别是emp.dept.bonus(也有可能不一样),这些表都在scott账户中. 转载于:https://www.cnblogs.com/gaofei-1 ...

  7. oracle中如何创建一个过程,如何开发ORACLE存储过程

    一. 概述 Oracle存储过程开发的要点是: • 使用Notepad文本编辑器,用Oracle PL/SQL编程语言写一个存储过程; • 在Oracle数据库中创建一个存储过程; • 在Oracle ...

  8. Oracle查询所有序列;[oracle中如何创建表的自增ID(通过序列);oracle sql语句大全

    Oracle查询所有序列 oracle sql语句大全 oracle中如何创建表的自增ID(通过序列)

  9. oracle每个租户指定字符集,理解 Oracle 多租户体系中(12c,18c,19c)创建用户作用域范围...

    本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个可以成功创建用户? 1. 在CDB级别中创建公共用户,不带 container 子句的效果: 2. 在CDB级别中创建公共用户,带 cont ...

  10. oracle怎么给表建同义词_oracle建同义词,oracle 中怎么创建同义词?

    oracle 中怎么创建同义词? 我们需bai要准备的材料分别du是:电脑.oracle. 1.首zhi先打开oracle,如果dao想要实现表空间的方内法容,则输入以下代码: 2.如果想要实现用户的 ...

最新文章

  1. HTTP POST慢速DOS攻击初探
  2. 图像有损压缩matlab程序,基于Matlab的灰度图像DCT与RLE的混合有损压缩
  3. 贝塞尔结合CAShapeLayer绘制路线,CABasicAnimation实现的小动画
  4. setTimeout和setInterval你真的了解吗?
  5. Apache Maven 入门篇
  6. 【mongodb用户和身份认证管理】
  7. HTML table标签和其子标签如td,td等不同区域focus然后回车的行为差异
  8. BZOJ2216: [Poi2011]Lightning Conductor
  9. linux 下安装部署mq,RocketMQ在linux下安装部署
  10. mysql 主键索引如何创建_SQL创建索引、主键
  11. 内涝预测过程的噪音_提高人工智能模型准确率的测试过程中需要注意什么?
  12. 华硕固件默认ip,新路由3 newifi d2刷机刷华硕固件教程
  13. 如何删除ie浏览器缓存文件、缓存js
  14. Switch case 使用及嵌套语法
  15. SpringBoot的旅游系统毕业设计分享和讲解
  16. 遥感相关专业英语词汇汇总
  17. 看得见风和日丽,看不见风起“云”涌
  18. VC++中unhandled exception的处理
  19. 国内oschina Maven公共仓库
  20. 我的 Java 后端面试日记!

热门文章

  1. 计算机动画题目,3DMax2014计算机动画作业练习题
  2. 1156:求π的值(函数题)
  3. 第九届全国大学生GIS应用技能大赛下午(试题及参考答案含数据)
  4. Julia数据可视化:Plots.jl包的使用
  5. 德国GMX Email免费邮箱服务65GB超大邮件存储空间
  6. GROMACS .mdp 选项翻译及笔记
  7. c语言常用颜色种类,C语言常用颜色种类(国外英语资料).doc
  8. 圣剑传说 玛娜传奇(Legend of Mana)(LOM)主原料取得方法
  9. HTB-SolidState
  10. Windows10使用命令行打开3389_内网渗透(实验)之域渗透深入弹shell开3389拿域控