需求:在Oracle的一张表中我们希望有一列,该列是整型数据类型,当我们添加一条记录时该列自动开始增长。
Oracle利用“序列(sequence)”来实现此要求。
1、创建一个序列:
create sequence 序列名
start with 1
increment by 1 递增1
minvalue 1
Maxvalue 300000
cycle 循环
nocache
使用:
创建一张表。test1(两列,第一列自增长)
inert into test1 values(序列名.nextval,'abc');
序列的细节:
可以被多个用户共享》
system可以使用scott的序列,并且是接着增长。
一般用于主键和唯一列。
nocache 表示不缓存,每次只产生1个号
cache 10 表示每次产生10个号,效率较高,可能产生跳号。
序列名.currval 返回序列的当前值。
nextval增加sequence值,返回当前值。
只有在进行过一次nextval后,才能使用currval。
第一次nextval返回的是当前值,后面的nextval返回的是next后的值。
使用环境:
不包含子查询、snapshot、view的select语句。
insert语句的子查询中
insert语句的value
update的set中
update 表名 列值=序列名.nextval where...
sql server 和MySQL都是在定义表的时候直接指定自增长。
sql server:
create table 表名(
id int primary key identity(1,1)
);
mysql:
create table 表名(
id int primary key aout_increment
);