首页  编辑  

序号生成器

Tags: /超级猛料/Database.数据库相关/   Date Created:

序号生成器

    有很多应用系统要用到序号,如商场的销货号,货物入库的流水号

等等。由于序号是连续生成的,在大型系统中,会有多个用户同时申请

下一个序号,序号生成便成了应用系统的瓶颈问题∥私饩稣飧鑫侍猓 ?nbsp;

大型数据库都增加了序号对象。通过序号对象可以自动生成序号,多个

用户可以并发读取,无需互相等待。

ORACLE 的序号生成器

   ORACLE 序号生成的语法为:

     create 序号名 increment by 每次增长数

     start with 起始序号

    例如,生成序号 seq1 ,初始值为 1 ,每次增长为 1

     create seq1 increment by 1

     start with 1

    可以用下面的语句得到当前的序号:

     select seq1.currval from dual

    也可以用下面的语句得到下一个序号:

     insert into dept values(seq1.nextval,...)

    在一个事务中,不管由于什么原因程序终止,已经申请的序号就不能

再使用了。多个用户同时使用序号时,它们之间互不等待。因此,使用序

号发生器会有跳号现象出现。

SYBASE 的序号生成器

    SYBASE 中,每个表可以有一个 identity 列,此列即为序号列。定义

序号列的语法为:

     create table 表名

     (...

      序号列名 numeric( 长度 ,0) identity,

      ...

     )

    序号列的数据类型必须是 numeric ,小数位数必须是 0

   SYBASE 会自动往序号列中加入数据。序号的起始值为 1 。与 ORACLE 类似,

在一个事务中,不管由于什么原因程序终止,都会出现跳号现象。