zoukankan      html  css  js  c++  java
  • oracle中的序列

    一、序列:

       自动提供唯一的数值、共享对象、主要用于提供主键值、将序列值装入内存可以提高访问效率。

       也可理解为序列是一个计数器,它并不会与特定的表关联。通过创建Oracle序列实现表的主键自增。

       序列的用途一般用来填充主键和计数。

    二、语法:

      创建序列:

          CREATE SEQUENCE 序列名
          [INCREMENT BY n]       --  定义序列的步长  如省略则默认为1、如为负数则递减
          [START WITH n]       --  定义序列的起始值   默认为1
          [{MAXVALUE/ MINVALUE n|NOMAXVALUE}]    定义序列的最大或最小值、给定其范围
          [{CYCLE|NOCYCLE}]             是否循环
          [{CACHE n|NOCACHE}];           是否缓存

      删除序列:

          DROP SEQUENCE 序列名;

    三、序列使用

        CURRVAL: 返回序列的当前值。
        NEXTVAL: 序列递增,返回下一值。

    、序列的应用

    假设有表TEST,其主键为TEST_ID
    1)建立递增序列SEQ_TEST:
    create sequence SEQ_TEST
    increment by 1
    start with 1
    minvalue 1 nomaxvalue
    nocylce

    2)建立触发器,当有数据插入表TEST时,使用Oracle序列为其去的递增的主键值
    create trigger TRG_TEST before insert on TEST
    for each row
    begin
    select SEQ_TEST.nextval into :new.TEST_ID from dual;
    end;

    至此,创建完成!

    当然也可以不使用触发器,而是在插入时在sql语句中调用序列,例如
    insert into TEST values(SEQ_TEST.nextval, ……)

    代码如下图:

     
  • 相关阅读:
    [C#][控件]WebBrowser 使用范例
    [java]经验集
    [html][easyui]DataGrid 绑定
    [转]jQuery 读取 xml
    [转][html]大文件下载
    [转][javascript]判断传入参数
    [html][javascript] Cookie
    [bat]批处理删默认共享和清理垃圾
    [转]JavaScript RegExp 对象参考手册
    5个编程问题(1小时解决)
  • 原文地址:https://www.cnblogs.com/mauan/p/7232264.html
Copyright © 2011-2022 走看看