一 序号生成器
有很多应用系统要用到序号,如商场的销货号,货物入库的流水号
等等。由于序号是连续生成的,在大型系统中,会有多个用户同时申请
下一个序号,序号生成便成了应用系统的瓶颈问题∥私饩稣飧鑫侍猓 ?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 类似,
在一个事务中,不管由于什么原因程序终止,都会出现跳号现象。