oracle的sequence序列

Sequence:序列是一个数据对象,可以用来生成唯一的整数。是数据库里独立的对象,不依赖任何表,为oracle所特有。用来自动生成主键值,可以用sequence的地方:inert语句的子查询中,update的set等。创建序列
:Create sequence seqname

—increament by 1//每次增长1

—start with 1//从1开始增长

—maxvalue 100//最大值是100,nomaxvalue:不设最大值

—nocycle//一直累加没有循环

—nocache//没有缓冲

—省略所有的选项,那么默认是从1开始增,每次增1

序列的最大值是38位整数,起始值不可以小于最小值

重点说明:

  1. cache参数是为了应对并发访问的,它告诉oracle预先分配一个sequence
    number集合,并且保存在内存中,以便可以快速访问。这个内存的大小由cache决定,当多个用户同时访问一个sequence的时候,是在
    oracle的SGA中读取sequence当前的合理数值,如果并发访问太大,但cache的大小不过,就会产生sequence
    cache的相关等待,影响系统性能,简单说 就是缓存。

  2. 使用cache还可能会跳号;比如数据库突然不正常shut
    down,cache中的sequence就会丢失,可以再创建序列的时候加上nocache来避免。

  3. SGA:系统全局区,是一组包含一个oracle实例的数据和控制信息的共享内存结构,主要是用于存储数据库信息的内存区。

  4. sequence的使用:

1.nextval:增加sequence的值然后返回sequence值,如果cache,就取cache下一个可用的值;否则取出sequence下一个可用的值。

Create table tablename(

Id number primary key,

Name varchar2

);

Insert into tablename values(seqname.nextval,’xiaoming’);

查询当前序列:select seqname.nextval from dual;

2.currval:当前连接最后一次使用序列的值,即:当前序列的值,在第一次nextval初始化之后才能使用,否则报错,select
seqname.currval from dual;

3.修改序列:Alter sequence
seqname[increament
by][maxval][minval][cycle][cache],注意序列的起始值不可以改变,如果要改,必须先drop掉序列。

4.删除序列Drop
sequence seqname;

注:mysql里的auto_increament类似sequence,

Create table tab2(

Id number not null auto_increment,

Primary key(id)

oracle的sequence序列,布布扣,bubuko.com

时间: 2024-11-03 22:05:39

oracle的sequence序列的相关文章

Oracle数据库中序列(SEQUENCE)的用法详解

在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值.本文我们主要介绍了序列的用法,希望能够对您有所帮助. AD: 在Oracle数据库中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其实是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值. 创建序列需要CREATE SEQUENCE系统权限

oracle触发器、序列、任务计划练习一例

今天在闲暇时间练习了一下oracle任务计划,具体详情如下 1.创建表 TBL_TIME create table tbl_time( id number not null,    /*id号*/ vsecond varchar2(2),   /* 秒*/ vtime varchar2(10)    /*当前时间*/ ) 2.创建序列 seq_tbltime create sequence seq_tbltime start with 1 increment by 1 nomaxvalue no

Oracle操作ORA-02289: 序列不存在 解决方案

hibernate 操作数据库时, 当添加操作时报 Oracle操作ORA-02289: 序列不存在 hibernate描述文件 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourcefor

【Oracle】详解Oracle中的序列

序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建序列的权限 create sequence 或 create any sequence 2.  创建序列的语法 CREATE SEQUENCE sequence  //创建序列名        [INCREMENT BY n]  //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1        [STAR

Oracle数据库中序列用法讲解

序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值. AD:WOT2015 互联网运维与开发者大会 热销抢票 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值. 创建序列需要CREATE S

oracle 手动增加序列值

1.select seq_name.nextval from dual; //假设得到结果5656 2.alter sequence seq_name increment by -5655; //注意是-(n-1) 3.select seq_name.nextval from dual;//再查一遍,走一下,重置为1了 4.alter sequence seq_name increment by 1;//还原 oracle 手动增加序列值

Oracle中的序列

序列是什么? 序列是用来生成唯一.连续的整数的数据库对象.序列通常用来自动生成主键或唯一键的值.序列可以按升序排列,也可以按照降序排列. 其实Oracle中的序列和MySQL中的自增长差不多一个意思. 创建序列  创建序列.从序号10开始,每次增加1,最大为2000,不循环,再增加会报错 CREATE SEQUENCE seq1 START WITH 10 INCREMENT BY 1 MAXVALUE 2000 NOCYCLE CACHE 30; 访问序列 访问下一个: seq1.NEXTVA

Oracle 触发器和序列的创建和使用 (自动增长列)

-- 创建序列 create sequence 序列名称        start with 1 -- 起始值        increment by 1 -- 增量        maxvalue 99999999 -- 最大值        nocycle -- 达到最大值后是否重新计算,当前为不重新计算,cycle为重新计算        nocache; -- 不要缓存,容易跳号 -- 创建触发器 CREATE OR REPLACE TRIGGER 触发器名称 BEFORE INSERT

Python学习笔记之-sequence序列

1:sequence(序列)是一组有顺序的元素的集合 : (严格的说,是对象的集合,但鉴于我们还没有引入"对象"概念,暂时说元素) 序列可以包含一个或多个元素,也可以没有任何元素. 我们之前所说的基本数据类型,都可以作为序列的元素.元素还可以是另一个序列,以及我们以后要介绍的其他对象. 序列有两种:tuple(定值表: 也有翻译为元组) 和 list (表) >>>s1 = (2, 1.3, 'love', 5.6, 9, 12, False)         # s