oracle 序列的创建与使用

(2012-03-15 16:14:09)

---------------------------------------------------------------------------------------------------转载-------------------------------------------------------------------------------------------------------------------

    在Oracle中,可以使用序列自动生成一个整数序列,主要用来自动为表中的数据类型的主键列提供有序的唯一值,这样就可以避免在向表中添加数据时,手工指定主键值。而且使用手工指定主键值这种方式时,由于主键值不允许重复,因此它要求操作人员在指定主键值时自己判断新添加的值是否已经存在,这很显然是不可取的。

(1)创建序列

序列与视图一样,并不占用实际的存储空间,只是在数据字典中保存它的定义信息。创建序列需要使用CREATE SEQUENCE语句,其语法如下:

CREATE SEQUENCE [schema]。sequence_name  --序列名

[ START WITH start_number ]  --开始数字

[ INCREMENT BY increment_number ]  --每次加几

[ MINVALUE minvalue | NOMINVALUE ]  --最小值

[ MAXVALUE maxvalue | NOMAXVALUE ]  --最大值

[ CACHE cache_number | NOCACHE ]  

[ CYCLE | NOCYCLE ]  --是否循环

[ ORDER | NOORDER ];  

注意:cache参数指定内存预分配的序列数的个数,默认20个,为了加快访问速度。

      order参数指定是否按照请求次序生成序列号,一般使用序列生成主键值时,影响不大。

(2)序列中的两个伪列

Currval:用于获取序列的当前值,必须再使用nextval一次之后才能使用。
nextval:用于获取序列的下一个值,第一次使用返回的是初始值,向表中的主键赋值的时候使用此伪列。
(3)序列举例 
  • 首先创建student表:
    create table student(
    sid number(4) primary key,
    sname varchar2(8) not null
    );
  • 创建student_seq序列

    create sequence student_seq

    start with 1

    increment by 1

    nocache nocycle order;

  • 创建触发器(使用student_seq序列)

     create trigger tr_student

    before insert on student

    for each row

    begin

    select student_seq into :new.sid from dual;

    end;

  • 插入数据:

    SQL> insert into student(sname) values('zhang')

    已创建 1 行。

    SQL> insert into student(sname) values('li');

    已创建 1 行。

    SQL> insert into student(sname) values('wang')

    已创建 1 行。

  • 查询数据:
  • SQL> select * from student;
  •        SID SNAME
    ---------- --------
            1  zhang
            2  li
            3  wang

oracle序列的创建和使用的更多相关文章

  1. Oracle序列(Sequence)创建、使用、修改、删除

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

  2. Oracle 序列的创建删除插入

    今天学习的是序列的创建蟹盖和删除插入 创建: create Sequence Seq_name increment by n     ----序列变化的程度,默认为1,可以为负数表示递减 start ...

  3. <<< Oracle序列的创建、修改、删除基本操作

    序列是一个命名的顺序编号生成器,可以被多个用户共享,类似sqlserver中的identity create sequence 序列名; //直接创建一个序列 CREATE SEQUENCE 序列名; ...

  4. oracle中如何创建表的自增ID(通过序列)

    1.什么是序列呢? 序列是一数据库对象,利用它可生成唯一的整数.一般使用序列自动地生成主码值.一个序列的值是由特别的Oracle程序自动生成,因而序列避免了在运用层实现序列而引起的性能瓶颈. Orac ...

  5. oracle序列

    一.序列 序列是oracle用来生产一组等间隔的数值.序列是递增,而且连续的.oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增.序列的编号不是在插入记录的时候自动生 ...

  6. oracle 序列 详解

    序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l  自动提供唯一的数值 l  共享对象 l  主要用于提供主键值 l  将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建 ...

  7. 触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证--Oracle序列

    程序开发时报错:触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证打开触发器的定义,执行其中的语句,发现序列 U_USER_INFO_SEQ 未定义.什么是序列呢?序列相当于sql ...

  8. Oracle序列使用:建立、删除

    转自:http://www.cnblogs.com/WangPB/archive/2010/07/13/1776766.html 在开始讲解Oracle序列使用方法之前,先加一点关于Oracle cl ...

  9. Oracle 序列的应用

    Oracle创建序列,删除序列,得到序列 序列的创建 create sequence seq_newsId increment by 1 start with 1 maxvalue 999999999 ...

随机推荐

  1. docker 网络实践

    #docker 网络模式 环境 centos7. , Docker version -ce docker自带网络类型 bridge,host,none,container,overlay,macvla ...

  2. 名词-JS

    1: 构造函数的伪装.(JS继承的时候出现 通过call函数改变this指向的对象) 2: 原型链.(JS继承的时候出现) 3:宿主对象:(有浏览器提供的对象.DOM, BOM  - Document ...

  3. IntelliJ IDEA 2016 破解旗舰版

    JRebel 授权服务器http://idea.lanyus.com/ilanyulanyu19950316@gmail.com

  4. webpack快速入门——CSS进阶,Less文件的打包和分离

    1.要使用less,首先使用npm安装less服务 cnpm install less --save-dev 还需要安装Less-loader用来打包使用. cnpm install less-loa ...

  5. 模仿 AppStore 顶部动画

    App Store 顶部动画 App Store 中 Games.Apps.Updates 的顶部动画的特点: 自然状态下是大标题,右边有一个 button 顶上去时,变成小标题,右边按钮消失 导航栏 ...

  6. 通过sessionStorage来根据屏幕宽度变化来加载不同的html页面

    因为项目需要,分别写了移动端和PC端的两个html页面,现在需要根据不同的屏幕宽度来加载对应的页面. 先说一下本人的思路-- 刚开始我直接在加载页面的时候判断屏幕宽度,然后加载相应的页面,大家是不是也 ...

  7. js02--对象、函数、switch、for、异常、表单验证

    现在我们接着来继续学习有关js的一些基础. 1.undefined与null    undefined:当变量声明但尚未赋值时,它的类型就是undefined    null:表示一个不存在的对象,它 ...

  8. Java之集合(十五)Set综述

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7427554.html 1.前言 原本按照顺序应该是list.queue然后就是set的讲解,但是因为set的实现 ...

  9. (win 7)使用puma以后,重启rails server报错: in `trap': unsupported signal SIGCHLD (ArgumentError)

    如图: 解决方案: 把config/puma.rb 文件中的 workers Integer(ENV['WEB_CONCURRENCY'] || 2) 改成 workers Integer(ENV[' ...

  10. 【C#小知识】C#中一些易混淆概念总结(六)---------解析里氏替换原则,虚方法 分类: C# 2014-02-08 01:53 1826人阅读 评论(0) 收藏

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...