日期:2013-04-21 浏览次数:20536 次
oracle中没有象Acces中自动编号的字段类型,所以在oracle中要想用一个字段自动增值,还比较麻烦,在此提供应大家一个方法,利用序列,来完成字段的自动添加,下边引见一下怎样创建序列,使用序列,和删除序列。
1.创建序列--------------create sequence
create sequence Seq_AutoID //所起序列名叫 Seq_AutoID ,需求记住此序列名,当前方可调用
minvalue 1 //最小值从1开始 可以依据本人的需求自定义
maxvalue 9999999999999999999 //序列最大值为 999999999999999999999 可以自定义
start with 1 //从1开始 可以自定义
increment by 1 //递增幅度为 1 可以自定义
cache 20 ; //缓存20
2. 调用序列,完成自动加1 ------------Seq_AutoID.nextval
在向表中插入、更新 数据时可以调用 ,由于本人实际使用中只用到了 插入时调用,所以在此只举此列
EG: insert into table1 ( f1,f2,f3,f4) select f1,f2,f3,Seq_AutoID.nextval from table2 where 条件
当然上边这句是批量插入数据,你也可以用 values值来一条条插入。在此需说明的一点为table1.f4字段需为数值型(number)型。这样,你的table1中的f4字段就是从1开始,以幅度为1来递增的数值了,实现了自动添加的功用。当然幅度可以本人定义。
还有一点是 序列是值是独一的,只需你不断用nextval来递增的话,在oracle中序列号不会反复.可以用CurrVal来查询当前的序列值,在你nextval后,currval也会跟着变。
3.序列的删除--------------drop sequence
当为了重置序列时,或不需求序列时,可以先删除序列
EG: drop sequence Seq_AutoID;
4.用序列来修正某个字段的值
eg: update cse_depot set jobid=Seq_AutoID.nextval
以上这个例子是用当前的序列值给cse_depot的字段 jobid赋值,使jobid字段实现自动加1功用
以上几点是本人跟据本人所用总结出来的,也希望大家跟帖参与讨论。