oracle创建序列的sql
什么是Oracle序列?
Oracle序列是一种提供自动生成连续数字的对象,通常用于为表的主键和唯一约束生成唯一标识符。Oracle序列由一个名称、一个起始值和一个步长组成。它可以在任何需要生成唯一数值的地方使用。
Oracle序列的创建
在Oracle数据库中创建序列可以使用CREATE SEQUENCE语句。它的基本语法如下:
CREATE SEQUENCE sequence_name [INCREMENT BY increment_value] [START WITH start_value] [MAXVALUE maximum_value | NOMAXVALUE] [MINVALUE minimum_value | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE cache_value | NOCACHE];
其中,sequence_name是您想创建的序列的名称,increment_value是序列值的步长,start_value是序列起始值,maximum_value和minimum_value是序列的最大和最小允许值,CYCLE或NOCYCLE定义序列是否要重新开始。CACHE或NOCACHE定义在运行时缓存多少序列值以提高性能。
增加步长
您可以使用INCREMENT BY语句来增加序列的步长。步长定义每次递增的值,该值将添加到序列的当前值,以产生下一个值。默认步长为1,可使用此语句将它更改为其他值。例如,使用以下语句创建一个步长为5的序列:
CREATE SEQUENCE my_seq INCREMENT BY 5 START WITH 1 MAXVALUE 1000 CACHE 10;
这将创建一个名为my_seq的序列,起始为1,每次递增5,最大值为1000,并缓存10个序列值。
重复使用序列
在Oracle中,序列可以是循环的或非循环的。如果序列到达最大值并定义为循环,则它将从起始值开始重新使用(即重复)。如果它被定义为非循环,则它将停止递增并引发“ORA-08004: 序列 OUT OF RANGE”错误。例如,在以下序列中,步长为1,从1开始,最大值为3,定义为循环:
CREATE SEQUENCE my_seq INCREMENT BY 1 START WITH 1 MAXVALUE 3 CYCLE CACHE 10;
在这种情况下,序列将以以下方式递增:1,2,3,1,2,3,1,2,3...
使用序列
要从序列中获取下一个值,请使用NEXTVAL函数。例如,要将序列的下一个值插入已有的一个表中,请使用以下SQL语句:
INSERT INTO my_table (id, name) VALUES (my_seq.NEXTVAL, 'John Doe');
每次调用NEXTVAL函数时,序列将增加其步长,返回其下一个值。