Heim  >  Artikel  >  Datenbank  >  Oracle中序列-sequence的应用

Oracle中序列-sequence的应用

WBOY
WBOYOriginal
2016-06-07 17:11:221554Durchsuche

oracle中没有象Acces中自动编号的字段类型,所以在oracle中要想用一个字段自动增值,还比较麻烦,在此提供给大家一个方法,利用序

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功能

以上几点是自己跟据自己所用总结出来的,也希望大家跟帖参与讨论。

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn