45.4.7 序列:USER_SEQUENCES(SEQ)

要显示序列的属性,可以查询USER_SEQUENCES 数据字典视图。该视图也能用公有同义词SEQ 进行查询。USER_SEQUENCES 视图的列如下所示:

Sequence_Name 序列名

Min_Value 序列的最小值

Max_Value 序列的最大值

Increment_By 序列值之间的增量

Cycle_Flag 一个标志,一旦达到Max_Value 值,用来表明该值能否再循环回Min_Value 值

Order_Flag 一个标志,用来表明序列号是否按顺序生成

Cache_Size 内存中缓存的序列项的编号

Last_Number 使用的或缓存的最后一个序列号,一般大于缓冲区中的最后一个值

Last_Number 列在普通的数据库操作过程中不被更新,它在数据库的重新启动/恢复操作中使用。

ALL_SEQUENCES 视图列出了用户拥有的所有序列,或授权该用户或PUBLIC 所有用户访问的序列。由于ALL_SEQUENCES 视图包含多个用户的项,因此除已经列出的列外,它还包含一个Sequence_Owner 列。DBA_SEQUENCES 视图列出了数据库的全部序列,它与ALL_SEQUENCES 视图具有相同的列定义。

转载:

http://book.51cto.com/art/201007/212274.htm

---------------------------------------------------------------------------------------------------------------

一、序列
  序列是oracle用来生产一组等间隔的数值。序列是递增,而且连续的。oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增。序列的编号不是在插入记录的时候自动生成的,必须调用序列的方法来生成(一般调用nextval方法)。我们也可以编写表的insert触发器来进自动生成。
  创建语法:

create sequence 序列名称
[start with 初始量] 
[increment by 递增量] 
[maxvalue 最大值| nomaxvalue] 
[minvalue 最小值| nominvalue] 
[cycle | nocycle] 
[cache 缓存个数| nocache];

start with:生成第一个序列号,对于升序列,其默认值为序列最小值;对于降序序列,其默认值为序列的最大值 。
increment by:用于指定序列号之间的间隔,其默认值为1,如果integer为正值,则生成的序列按升序排列,如果integer为负值,则生成的序列将按降序排列。
maxvalue:序列可以生成的最大值。
nomaxvalue:oracle将升序序列的最大值设为1027,将降序序列的最大值设为-1.这是默认选项。
minvalue:minvalue必须小于或等于start with的值,并且必须小于maxvalue的值。
nominvalue:oracle将升序的最小值设为1,或将降序序列的最小值设为-1026.这是默认值。
cycle:序列在达到最大值或最小值后,将继续从头开始生成值。
nocycle:序列在达到最大值或最小值后,将不能再继续生成值。不写默认为nocycle这是默认选项 。
cache:预先分配一组序列号,并将其保留在内存中,这样可以更快地访问序列号.当用完缓存中的所有序列号.oracle将生成另一组数值,并将其保留在缓存中。
nocache:不会加快访问速度而预先分配序列号,如果在创建序列时忽略了cache和nocache,orcale将默认缓存20个序列号。

修改语法:
alter sequence 序列名称
[start with 初始量] 
[increment by 递增量] 
[maxvalue 最大值| nomaxvalue] 
[minvalue 最小值| nominvalue] 
[cycle | nocycle] 
[cache 缓存个数| nocache];

二、例子

  以下代码person表如下:

DROP TABLE person ;
CREATE TABLE person (
id NUMBER(11) NOT NULL ,
username VARCHAR2(255 ) NULL ,
age NUMBER(11) NULL ,
password VARCHAR2(255) NULL ,
PRIMARY KEY (id)
)

  创建序列

create sequence seq_tb_person
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;

  使用序列

insert into person (id, username, age, password) values (seq_tb_person.nextval, '张三', 20, 'zhang123')

  我们也可以通过建立触发器,当有数据插入表person时,使用oracle序列为其去的递增的主键值

-- 创建触发器
create or replace trigger trigger_set_person_id before insert on person
for each row
begin
select seq_tb_person.nextval into :new.id from dual;
end;
-- 插入数据
insert into person ( username, age, password) values ('张三', 20, 'zhang123')

  修改序列

alter sequence seq_tb_person
minvalue 1
maxvalue 999999999999999999999999999
-- start with 49 对于已经启动的序列,无法设置初始值
increment by 1
cache 20;

  查看用户的序列:

select sequence_name, min_value, max_value, increment_by, last_number from user_sequences;

  删除序列

drop sequence 序列名;

  通过USER_OBJECTS可以查看用户拥有的序列,USER_SEQUENCES可以查看序列的设置。

三、注意点

  • 一个序列可以被多张别使用,不过一般建议为每个表建立单独的序列。
  • 当使用到序列的事务发生回滚。会造成序列号不连续。在用生成的序列值作为编号做插入数据库操作时,可能遇到事务提交失败,从而导致序号不连续。
  • 大量语句发生请求,申请序列时,为了避免序列在运用层实现序列而引起的性能瓶颈。Oracle序列允许将序列提前生成 n个先存入内存,在发生大量申请序列语句时,可直接到运行最快的内存中去得到序列。但cache个数最好不要设置过大,因为在数据库重启时,会清空内存信息,预存在内存中的序列会丢失,当数据库再次启动后,序列从上次内存中最大的序列号+1 开始存入n个。这种情况也能会在数据库关闭时也会导致序号不连续。

转载:

https://www.cnblogs.com/always-online/p/4029703.html

45.4.7 序列:USER_SEQUENCES(SEQ)的更多相关文章

  1. 2019年第二阶段我要变强个人训练赛第八场 B.序列(seq)

    传送门 B.序列(seq) •题目描述 给出一个长度为n的序列a,每次对序列进行一下的某一个操作. •输入 第一行两个整数n,q表示序列长度和操作个数. 接下来一行n个数,表示序列a. 接下来q行表示 ...

  2. Python基础学习之序列(1)

    序列 序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到.而多个元素可以通过切片操作的方式一次得到,下标偏移量是从0开始到总元素-1结束,之所以要减1是因为我们是从0开始计数的 ...

  3. 线性时间构造普吕弗(Prüfer)序列

    tree -> sequence 首先预处理数组 deg[N], deg[i]表示编号为i的节点的度数,我们每次要删除的节点肯定是 满足deg[i]=1 的编号最小节点, 首先找到所有叶子并选出 ...

  4. Lesson 2-1 (数据结构,序列通用的操作)

    2.0 数据结构 --- 数据结构是以某种方式组合起来的数据元素集合. --- python的常见的数据结构 2.1 序列(sequence) --- 序列中的每个元素都有编号,即索引(也称为下标). ...

  5. No.1 R语言在生物信息中的应用——序列读取及格式化输出

    目的:读入序列文件(fasta格式),返回一个数据框,内容包括--存储ID.注释行(anno).长度(len).序列内容(content) 一.问题思考: 1. 如何识别注释行和序列内容行 2. 如何 ...

  6. 尚学堂马士兵Oracle教程笔记

    检查Oracle安装 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba 然后,解除对scott用户的锁 alter user scott account ...

  7. 最全的ORACLE-SQL笔记

    -- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unloc ...

  8. pthon核心编程-读书笔记:知识点摘录与总结(方便理解和快速记忆)

    Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的.在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们, 缩短开发时间与代码量,产生出可读性更好的代码.C不提供, c+ ...

  9. 一梦江湖费六年——QQ群聊天分析

    本文结构: 一.那些年我们加过的QQ群 二.数据读入和整理(一)--来自蓝翔的挖掘机 二.数据读入和整理(二)--你不知道的事 三.聊天宏观(1)--寤寐思服 三.聊天宏观(2)日月篇 三.聊天宏观( ...

随机推荐

  1. vue 底部bottomnav

    <template> <div id="foot"> <div class="tabBar"> <div class= ...

  2. POJ 1416 Shredding Company 回溯搜索 DFS

    Shredding Company Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6173   Accepted: 3361 ...

  3. [bzoj4282]慎二的随机数列_动态规划_贪心

    慎二的随机数列 bzoj-4282 题目大意:一个序列,序列上有一些数是给定的,而有一些位置上的数可以任意选择.问最长上升子序列. 注释:$1\le n\le 10^5$. 想法:结论:逢N必选.N是 ...

  4. 配置sublime text 前端环境

    SublimeLinter是Sublime的一个代码检测工具插件.安装前台是配置好node环境 1,在sublime text安装 SublimeLinter 按下 Ctrl+Shift+p 进入 C ...

  5. post and get

    POST和GET是Web编程中的两个术语,他们是通过URI访问resource的两种方式.简单的说, GET 是把要访问的资源嵌入在URI中. 假设你在一个页面 http://www.myphone. ...

  6. android:怎样用一天时间,写出“飞机大战”这种游戏!(无框架-SurfaceView绘制)

    序言作为一个android开发人员,时常想开发一个小游戏娱乐一下大家,今天就说说,我是怎么样一天写出一个简单的"飞机大战"的. 体验地址:http://www.wandoujia. ...

  7. HBase编程实例

    摘要:在前文中安装了Hbase,通过Hbase shell能够进行一些操作.可是和实际的编程实例联系起来不方便,因此本文介绍有关Hbase编程的实例. 一.使用Eclipse开发HBase应用程序 1 ...

  8. 王立平--Failed to pull selection

    解决的方法:重新启动eclipse

  9. 【自己定义控件】android事件分发机制

    自己定义Viewgrou中我们或许会常常碰到这种情况,2个子控件的事件冲突导致滑动没实用了.滑动反应非常慢,点击没用了,要划非常多次才移动一点点等等.或许我们第一反应就是百度,google去搜索下答案 ...

  10. [ JavaScript ] JavaScript 实现继承.

    对于javascript中的继承,因为js中没有后端语言中的类式继承.所以js中的继承,一般都是原型继承(prototype). function P (name){ this.name = name ...