• 技术文章 >数据库 >Oracle

    Oracle的序列SEQUENCE解析

    长期闲置长期闲置2022-07-28 15:49:58转载224
    本篇文章给大家带来了关于Oracle的相关知识,详细讲解了Oracle中的序列SEQUENCE,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

    推荐教程:《Oracle视频教程

    一、序列介绍

    Oracle的序列是一种数据库对象,主要作用是用来产生唯一值。序列被创建以后可以通过数据字典找到序列对象,因此序列可以被多个对象共享。

    二、创建序列

    序列使用CREATE SEQUENCE语法进行创建:

    CREATE SEQUENCE sequence 
    [INCREMENT BY n]
     [START WITH n]
     [{MAXVALUE n | NOMAXVALUE}]
     [{MINVALUE n | NOMINVALUE}]
     [{CYCLE | NOCYCLE}]
     [{CACHE n | NOCACHE}];

    例如:

    CREATE SEQUENCE invoice_seq
    INCREMENT BY 1
    START WITH 1
    MAXVALUE 9999999
    NOCYCLE NOCACHE;

    三、查询序列

    一旦序列被创建,序列的创建代码就被文本化在数据字典中,可以在user_objects数据字典中看到,如:

    SELECT object_name,object_id,object_type  FROM user_objects WHERE object_name = 'INVOICE_SEQ';

    在user_sequences表中保存了序列明细信息:

    SELECT sequence_name, min_value, max_value, increment_by, last_number  FROM user_sequences;

    四、使用序列

    NEXTVAL和CURRVAL伪列

    使用如下 :

    SELECT invoice_seq.CURRVAL,invoice_seq.NEXTVAL FROM DUAL;
    
    INSERT INTO invoice  (invoice_id, vendor_id, invoice_number, invoice_total  )
          VALUES (invoice_seq.NEXTVAL, 10, 'INV' || invoice_seq.CURRVAL, 100  );

    可以在下面的上下文中使用NEXTVAL和CURRVAL:

    不能再以下的上下文中使用NEXTVAL和CURRVAL:

    另外要注意,ROLLBACK并不能使序列值回滚。

    五、修改序列

    如:

    ALTER SEQUENCE invoice_seq     INCREMENT BY 2 MAXVALUE 10   NOCACHE  NOCYCLE;

    修改序列时,有如下几个限制:

    六、删除序列

    DROP SEQUENCE invoice_seq;

    七、创建自增序列

    1、创建一个序列

    create sequence sq_recid 
    minvalue 1 maxvalue 999999  increment by 1   start with 1 noCYCLE;

    2、创建一个触发器

    create or replace trigger  trg_test
      before  insert on test for each row
    begin
      select sq_recid.nextval into :new.ID from dual;
    end;
    
    alter  trigger trg_test  enable;

    3、在C#中也可以手工插入序列到表中

    string sql="insert into test(ID,otherCol)value (Sql_recid.nextval,***)
        retuing ID into :ID"

    推荐教程:《Oracle视频教程

    以上就是Oracle的序列SEQUENCE解析的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:脚本之家,如有侵犯,请联系admin@php.cn删除
    专题推荐:oracle
    上一篇:详解Oracle控制文件及日志文件的管理问题 下一篇:Oracle查看表空间使用率以及实例解决爆满问题
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 实例详解Oracle数据表导入导出• 实例解析Oracle容器数据库的安装和使用• 完全掌握Oracle使用数据操作函数• Oracle示例详解分组数据• 浅析Oracle体系结构
    1/1

    PHP中文网