精华内容
下载资源
问答
  • ORACLE序列作用
    千次阅读
    2016-11-25 16:16:11

    ORACLE的序列用来辅助生成自增列用得。

    CREATE OR REPLACE TRIGGER SET_APPLOG_ID
    BEFORE INSERT ON APPLOG FOR EACH ROW
    DECLARE
    NEXT_APPLOG_ID NUMBER;
    BEGIN
    SELECT ID_APPLOG.NEXTVAL
    INTO NEXT_APPLOG_ID
    FROM DUAL
    ;

    :NEW.APPLOGID:=NEXT_APPLOG_ID;
    

    END;

    CREATE SEQUENCE AUTEK.ID_APPLOG
    START WITH 1
    MAXVALUE 999999999999999999999999999
    MINVALUE 1
    NOCYCLE
    NOCACHE
    NOORDER;

    更多相关内容
  • Oracle序列:序列(Sequence)创建、使用、修改、删除,序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成。语法:创建序列CREATE SEQUENCE ...

    Oracle序列:序列(Sequence)创建、使用、修改、删除,序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成。

    语法:创建序列

    CREATE SEQUENCE sequence_name

    [START WITH num]

    [INCREMENT BY increment]

    [MAXVALUE num|NOMAXVALUE]

    [MINVALUE num|NOMINVALUE]

    [CYCLE|NOCYCLE]

    [CACHE num|NOCACHE]

    语法解析:

    START WITH:从某一个整数开始,升序默认值是1,降序默认值是-1。

    INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是1,降序默认值是-1。

    MAXVALUE:指最大值。

    NOMAXVALUE:这是最大值的默认选项,升序的最大值是:1027,降序默认值是-1。

    MINVALUE:指最小值。

    NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是-1026。

    CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最小值后,从最大值重新开始。

    NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默认NOCYCLE。

    CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。Oracle默认会生产20个序列号。

    NOCACHE:不预先在内存中生成序列号。

    案例2:创建一个从1开始,默认最大值,每次增长1的序列,要求NOCYCLE,缓存中有30个预先分配好的序列号。

    代码演示:生成序列号

    SQL> CREATE SEQUENCE MYSEQ

    MINVALUE 1

    START WITH 1

    NOMAXVALUE

    INCREMENT BY 1

    NOCYCLE

    CACHE 30

    /

    Sequence created

    序列创建之后,可以通过序列对象的CURRVAL和NEXTVAL两个“伪列”分别访问该序列的当前值和下一个值。

    使用序列:

    SQL> SELECT MYSEQ.NEXTVAL FROM DUAL;

    NEXTVAL

    ----------

    1

    SQL> SELECT MYSEQ.NEXTVAL FROM DUAL;

    NEXTVAL

    ----------

    2

    SQL> SELECT MYSEQ.CURRVAL FROM DUAL;

    CURRVAL

    ----------

    2

    使用ALTER SEQUENCE可以修改序列,在修改序列时有如下限制:

    你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop  sequence 再 re-create .

    1. 不能修改序列的初始值。

    2. 最小值不能大于当前值。

    3. 最大值不能小于当前值。

    使用DROP SEQUENCE命令可以删除一个序列对象。

    序列修改和删除

    SQL> ALTER SEQUENCE MYSEQ

    MAXVALUE 10000

    MINVALUE -300

    /

    SEQUENCE ALTERED

    删除:

    SQL> DROP SEQUENCE MYSEQ;

    SEQUENCE DROPPED

    Oracle序列:序列(Sequence)创建、使用、修改、删除,序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成。

    语法:创建序列

    CREATE SEQUENCE sequence_name

    [START WITH num]

    [INCREMENT BY increment]

    [MAXVALUE num|NOMAXVALUE]

    [MINVALUE num|NOMINVALUE]

    [CYCLE|NOCYCLE]

    [CACHE num|NOCACHE]

    语法解析:

    START WITH:从某一个整数开始,升序默认值是1,降序默认值是-1。

    INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是1,降序默认值是-1。

    MAXVALUE:指最大值。

    NOMAXVALUE:这是最大值的默认选项,升序的最大值是:1027,降序默认值是-1。

    MINVALUE:指最小值。

    NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是-1026。

    CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最小值后,从最大值重新开始。

    NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默认NOCYCLE。

    CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。Oracle默认会生产20个序列号。

    NOCACHE:不预先在内存中生成序列号。

    案例2:创建一个从1开始,默认最大值,每次增长1的序列,要求NOCYCLE,缓存中有30个预先分配好的序列号。

    代码演示:生成序列号

    SQL> CREATE SEQUENCE MYSEQ

    MINVALUE 1

    START WITH 1

    NOMAXVALUE

    INCREMENT BY 1

    NOCYCLE

    CACHE 30

    /

    Sequence created

    序列创建之后,可以通过序列对象的CURRVAL和NEXTVAL两个“伪列”分别访问该序列的当前值和下一个值。

    使用序列:

    SQL> SELECT MYSEQ.NEXTVAL FROM DUAL;

    NEXTVAL

    ----------

    1

    SQL> SELECT MYSEQ.NEXTVAL FROM DUAL;

    NEXTVAL

    ----------

    2

    SQL> SELECT MYSEQ.CURRVAL FROM DUAL;

    CURRVAL

    ----------

    2

    使用ALTER SEQUENCE可以修改序列,在修改序列时有如下限制:

    你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop  sequence 再 re-create .

    1. 不能修改序列的初始值。

    2. 最小值不能大于当前值。

    3. 最大值不能小于当前值。

    使用DROP SEQUENCE命令可以删除一个序列对象。

    序列修改和删除

    SQL> ALTER SEQUENCE MYSEQ

    MAXVALUE 10000

    MINVALUE -300

    /

    SEQUENCE ALTERED

    删除:

    SQL> DROP SEQUENCE MYSEQ;

    SEQUENCE DROPPED

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • Oracle序列作用

    2019-03-05 14:52:57
    一、背景 项目开发过程中,数据库表中的主键值有时需要被设置为number类型且自增。...二、Oracle序列 参考:Oracle中常见序列操作 --要有创建序列权限 create sequence / create any sequence --删...

    一、背景

    项目开发过程中,数据库表中的主键值有时需要被设置为number类型且自增。MySql、Sql Server中使用工具创建表时能够很方便的设置自增,但是Oracle中没有设置自增的方法,一般情况使用序列和触发器来实现主键自增功能。

    二、Oracle序列

    参考:Oracle中常见序列操作

    --要有创建序列权限
    create sequence / create any sequence
    
     --删除序列
    drop sequence sequence_name;    
    

    查找序列

    --查找用户已创建的序列
    select * from user_sequences;
    
    --模糊搜索,序列
    select * from user_sequences  where  sequence_name like '%MY%';
    

    创建序列

    drop sequence sequence_name;     --删除序列
    create sequence sequence_name
    	increment by 1   --定义序列步长,若为负数,则按此步长递减   改行可省略,省略默认值为1
    	start with 1     --从1开始
    	maxvalue   99999999   /  nomaxvalue   --没有最大值
    	minvalue 1            --最小值从1开始
    	cycle      --累加到最大值后又循环开始  
    	/nocycle   --一直累加不循环
    	cache  500  /   nocache    --不使用缓存
    order;
    
    //cache 10 表示一次产生10个号
    //使用缓存产生号,优点是提高效率,缺点是可能产生跳号
    

    序列出现不连续原因:

    • 1、回滚
    • 2、系统异常
    • 3、多个表同时使用同一序列

    三、使用序列设置自增

    Oracle中建立一个序列:

    如:create sequences sequences_name start with 1 increment by 1;
    --建立了一个从 1 开始每次加 1 的序列
    

    访问序列时,用 sequences_name.nextval的语法。
    对于表数据插入时实现id字段自增,可以使用如下类似语法

    insert into test values (sequences_name.nextval,'ABC');
    

    当然也可以自动一些,对表的插入操作,建立一个触发器,每当有数据插入时,触发器自动修改id值为序列的新值,这样就完全实现自增id功能了。但触发器如果建的过多,会比较混乱,不易管理。


    展开全文
  • 方法一:Oracle序列直接转化为MySQL主键自增 MySQL代码如下: alter table user modify id integer auto_increment ; 其中:user为表名; id为主键 在数据库工具中也可以设置(navicat): 原创文章 3获赞 1访问...
  • 给大家分享MyBatis Oracle 自增序列的实现方法及mybatis配置oracle的主键自增长的方法,非常不错具有一定的参考借鉴价值,感兴趣的朋友一起看看吧
  • 重置oracle序列从指定数字开始 代码如下: declare n number(10); v_startnum number(10):=10000001;–从多少开始 v_step number(10):=1;–步进 tsql varchar2(200); v_seqname varchar2(200):=’MIP_JF_SEQUENCE’;...
  • 本文记录了一个模拟Oracle序列的方案,重点是想法,代码其次。 Oracle序列的使用,无非是使用.nextval和.currval伪列,基本想法是: 1、MySQL中新建表,用于存储序列名称和值; 2、创建函数,用于获取序列表中的值;...
  • oracle 序列的创建和作用

    千次阅读 2016-08-24 11:30:48
    1.创建:CREATE SEQUENCE emp_sequence --序列名 INCREMENT BY 1 --如果省略,则默认为1,如果负值,则代表序列的值是按照此步长递减的。 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- ...

    1.创建:

    CREATE SEQUENCE emp_sequence  --序列名
    INCREMENT BY 1   --如果省略,则默认为1,如果负值,则代表序列的值是按照此步长递减的。 
    START WITH 1       -- 从1开始计数  
    NOMAXVALUE        -- 不设置最大值  
    NOCYCLE               -- 一直累加,不循环  
    CACHE 20;  --CACHE(缓冲)定义存放序列的内存块的大小,默认为20。

    2.修改:

     ALTER SEQUENCE 序列名
      [INCREMENT BY n]
      [{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
      [{CYCLE|NOCYCLE}]
      [{CACHE n|NOCACHE}];
    
    *不能修改序列的初始值

    3.删除

    DROP SEQUENCE 序列名;
    

    4.查看所有序列

    select SEQUENCE_NAME from dba_sequences

    select * from USER_SEQUENCES

    5.特点:

    是oacle提供的用于产生一系列唯一数字的数据库对象。

    l 自动提供唯一的数值

    l 共享对象

    l 主要用于提供主键值

    l 将序列值装入内存可以提高访问效率

    展开全文
  • oracle序列详解

    千次阅读 2018-06-14 11:06:29
    但是oracle中没有设置自增的方法,一般情况我们会使用序列和触发器 来实现主键自增的功能。下面这面文章主要介绍序列。 1234知识点一:什么是序列序列: 是oacle提供的用于产生一系列唯一数字的数据库对象。1知识.....
  • mysql生成oracle序列

    2019-07-11 19:55:06
    文档 里面包含了 mysql创建 oracle序列的脚本,数据库表、函数、使用案例 sql和截图 ,自带 根据步长和值长度,到数据最大时返回0;手册说明详细,表名字段都有解释,一看就懂
  • oracle导出序列

    2014-09-22 23:45:45
    介绍了PL/SQL工具,导出oracle序列的方法以及步骤
  • 创建序列demo_s:  create sequence demo_s  minvalue 1000  maxvalue 999999999999999999  start with 1000  increment by 1  cache 20;  解释:  INCREMENT BY:指定序列增长步长。可以为正...
  • 学 海 无 涯 PAGE PAGE 1 查询oracle序列值 在数据源增加引用 System.Configuration System.Data.OracleClient 在相关表的对象类中增加using: using System.Data.OracleClient; using System.Configuration; 用以下...
  • 今天从oracle迁移数据到mysql碰到个需求:原先的主键字段需要改成mysql中的自增字段,而且原先数据的值不能变,以后新插入的值从原先数据最大的值开始自增。 解决办法: 构建环境: mysql> CREATE TABLE test -> ( ...
  • Oracle 序列

    2019-08-08 01:03:27
    NULL 博文链接:https://chaoyi.iteye.com/blog/2146830
  • NULL 博文链接:https://zzx0421.iteye.com/blog/335955
  • oracle中创建序列序列补零实例详解 我们经常会在在DB中创建序列: -- Create sequence create sequence COMMON_SEQ minvalue 1 maxvalue 999999999 start with 1 increment by 1 cache 20 cycle; 我们的序列的...
  • oracle 创建id主键序列的 脚本 及 使用方式 oracle 创建id主键序列的 脚本 及 使用方式
  • 序列 序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列, 序列中的可以升序生成,也可以降序生成。创建序列的语法是: 语法结构:创建序列 CREATE SEQUENCE sequence_name [START ...
  • oracle序列详解

    2021-04-30 07:52:12
    }] //最大值[{MINVALUEn|NOMINVALUE}...//分配并存入到内存中NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用CURRVAL 中存放序列的当前值NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效Create sequence seq...
  • 答:在Oracle中虽然没有自增列的说法,但却可以通过触发器(trigger)和序列(sequence)来模式实现。 示例: 1、建立表 代码如下:create table user  (   id number(6) not null,   name varchar2(30) not ...
  • 1、序列的创建与说明创建序列,Oracle序列的语法格式为:CREATE SEQUENCE 序列名[INCREMENT BY n][START WITH n][{MAXVALUE/ MINVALUE n|NOMAXVALUE}][{CYCLE|NOCYCLE}][{CACHE n|NOCACHE}];1)INCREMENT BY用于定义...
  • oracle 序列迁移

    2020-04-02 10:57:35
    1.oracle 序列迁移 背景:需要对oracle数据库的数据进行迁移,数据表都迁移过去了,但序列未跟随表,这个在oracle中是单独存在的,不像mysql,序列是和表关联在一起的。言归正传,oracle中的序列 SELECT 'drop ...
  • oracle序列跳号,回跳

    2021-03-17 22:14:01
    单机跳号 集群跳号,回跳 SEQUENCE cache原理: oracle管理序列方法: 序列等待事件
  • 1、什么是序列 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。不占用磁盘空间,占用内存。其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过...
  • ORACLE创建序列

    2021-12-31 11:06:21
    1. A为库名,B为表名 create sequence A.SEQ_B minvalue 1 maxvalue 99999999999999999999 start with 1 increment by 1 cache 20; ...createsequenceA.SEQ_B //SEQ_后边为...startwith1 //序列的初始值,默认为1 i...
  • ORACLE数据库中,序列(SEQUENCE)是使用非常频繁的一个数据库对象,但是有时候会遇到序列(SEQUECNE)跳号(skip sequence numbers)的情形,那么在哪些情形下会遇到跳号呢,下面通过本文给大家详解介绍,一起看看...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,394
精华内容 47,357
关键字:

oracle序列的作用