Oracle数据库中序列用法讲解

队列(SEQUENCE卡塔尔(قطر‎是类别号生成器,可认为表中的行自动生成种类号,产生大器晚成组等间距的数值(类型为数字卡塔尔(قطر‎。其首要的用途是生成表的主键值,能够在插入语句中引用,也能够透过查询检查当前值,或使种类增到下贰个值。

1,SQL Server类别创造与应用

成立系列供给CREATE SEQUENCE系统权限。系列的开创语法如下:

BEGIN
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'event_seq')
DROP SEQUENCE event_seq
END
CREATE SEQUENCE event_seq
MINVALUE 1
MAXVALUE 999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;
 --使用时
GO
select next value for event_seq;

CREATESEQUENCE序列名 [INCREMENTBYn] [STARTWITHn]
[{MAXVALUE/MINVALUEn|NOMAXVALUE}] [{CYCLE|NOCYCLE}]
[{CACHEn|NOCACHE}];

 

其中:

GO
INSERT INTO NAMETABLE (INDEX,NAME) VALUES (2,'S_CN' + rtrim(ltrim(right(cast('00000000'+rtrim(next value for ENTITY_SEQ) as varchar(20)),10))))
--查询下个序列值
SELECT
NEXT VALUE FOR [dbo].[ATTENDANCE_SEQ];
--查询当前序列值
SELECT cache_size, current_value 
FROM sys.sequences
WHERE name = 'ATTENDANCE_SEQ' 

INCREMENT BY
用于定义类别的肥瘦,假使简单,则默以为1,即使现身负值,则意味连串的值是依据此步长递减的。

  

START WITH 定义连串的起头值(即发生的首先个值卡塔尔(قطر‎,默认为1。

2 Oracle体系创建与利用

永利澳门游戏网站,MAXVALUE
定义种类生成器能发出的最大值。选项NOMAXVALUE是私下认可选项,代表未有最大值定义,当时对于依次增加种类,系统能够产生的最大值是10的叁十二回方;对于依次减少类别,最大值是-1。

BEGIN
    EXECUTE IMMEDIATE 'DROP SEQUENCE STAFF_SEQ';
    EXCEPTION WHEN OTHERS THEN NULL;
END;
CREATE SEQUENCE STAFF_SEQ
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;
--在触发器中使用序列
CREATE OR REPLACE TRIGGER TR_INST_STAFF
    BEFORE INSERT ON M_MAINTENANCESTAFF
    FOR EACH ROW
BEGIN
    select STAFF_SEQ.NEXTVAL into :new.STAFFINDEX from dual;
END;
--STAFF_SEQ.NEXTVAL标示下一个序列值
--STAFF_SEQ.CURRVAL标示下一个序列值

MINVALUE定义种类生成器能发生的小不点儿值。选项NOMAXVALUE是默许选项,代表未有最小值定义,这个时候对于依次减少种类,系统能够爆发的最小值是?10的三十一遍方;对于依次增加体系,最小值是1。

队列首要字:

CYCLE和NOCYCLE
表示当类别生成器的值达到节制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。若是循环,则当依次增加类别到达最大值时,循环到细微值;对于依次减少连串达到最小值时,循环到最大值。假如不循环,达到限定值后,继续产生新值就能够生出错误。

1卡塔尔(قطر‎INCREMENT
BY用于定义体系的大幅度,借使轻便,则暗中认可为1,借使现身负值,则意味Oracle系列的值是安分守纪此步长依次减少的。

CACHE(缓冲卡塔尔(قطر‎定义寄存系列的内存块的深浅,默感觉20。NOCACHE表示不对队列进行内存缓冲。对队列举行内部存款和储蓄器缓冲,能够修正种类的属性。

 

剔除体系的语法是:

2State of QatarSTART WITH 定义类别的初步值(即爆发的首先个值卡塔尔,默认为1。

DROPSEQUENCE序列名;

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注