oracle之表中指定字段自增

表裏指定字段自增,這個問題在SQLSERVER裏面來說很簡單  ,Identity(1,1)該字段就會從1開始,按照+1的方式自增.

但是在Oracle裏面呢,就需要用到序列和觸發器完成纔可以。   

相信這個問題每一個轉Oracle型數據庫時都會遇到。   所以我在此寫一篇博客,不求聞達於諸侯,只希望大家也和我一樣願意把自己遇到的問題寫到博客上,來幫助每一位IT行業的同伴。

首先數據表名: t_sys_organize

查詢數據     select * from t_sys_organize;

表中主鍵列是F_ID ,接下來就指定該列F_ID自增長,  以100000起開始,後面添加數據依次+1,100001,100002,100003.........等等

 


-----oracle 指定字段 自增  ,1.要先創建一個序列  2. 之後創建一個觸發器

--- 序列   (序列與觸發器實現t_sys_organize表中F_ID字段的自動增長)
create sequence t_sys_organize_F_ID_SEQUENCE
minvalue 100000
maxvalue 99999999
start with 100000
increment by 1
nocache;


--觸發器  (序列與觸發器實現t_sys_organize表中F_ID字段的自動增長)


CREATE OR REPLACE TRIGGER t_sys_organize_F_ID_TRIGGER BEFORE INSERT ON t_sys_organize FOR EACH ROW WHEN(NEW.F_ID IS NULL)
BEGIN 
        SELECT t_sys_organize_F_ID_SEQUENCE.NEXTVAL INTO:NEW.F_ID FROM dual;
END;

之後添加數據,則如圖顯示:

就會看到該數據依次遞增。

其中序列的語法:

創建序列 
語法 CREATE SEQUENCE 序列名 [相關參數]
參數說明 
INCREMENT BY :序列變化的步進,負值表示遞減。(默認1) 
START WITH:序列的初始值 。(默認1) 
MAXvalue:序列可生成的最大值。(默認不限制最大值,NOMAXVALUE) 
MINVALUE:序列可生成的最小值。(默認不限制最小值,NOMINVALUE) 
CYCLE:用於定義當序列產生的值達到限制值後是否循環(NOCYCLE:不循環,CYCLE:循環)。 
CACHE:表示緩存序列的個數,數據庫異常終止可能會導致序列中斷不連續的情況,默認值爲20,如果不使用緩存可設置NOCACHE
例 
CREATE SEQUENCE SEQ_DEMO 
INCREMENT BY 1 
START WITH 1 
NOMAXvalue 
NOCYCLE 
NOCACHE;

修改、刪除序列 
使用 alter 命令進行修改
使用 drop 命令刪除
序列的使用 
currval 表示序列的當前值,新序列必須使用一次nextval 才能獲取到值,否則會報錯
nextval 表示序列的下一個值。新序列首次使用時獲取的是該序列的初始值,從第二次使用時開始按照設置的步進遞增
查詢序列的值:select seq_name.[currval,nextval] from dual;
SQL語句中使用:insert into table (id) values (seq_name.nextval)
--------------------- 
作者:Developer_Dongyang 
來源:CSDN 
原文:https://blog.csdn.net/hu_dongyang/article/details/79039737 
 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章