1. 程式人生 > >Sequence在Oracle中的使用

Sequence在Oracle中的使用

board 自動 clipboard oar sta tar 效率 丟失 每次

Oracle中,當需要建立一個自增字段時,需要用到sequence。sequence也可以在mysql中使用,但是有些差別,日後再補充,先把oracle中sequence的基本使用總結一下,方便日後查閱。

1、創建sequence

[sql] view plain copy
  1. create sequence SEQ_ON_USER
  2. minvalue 1
  3. maxvalue 999999999999999999999999999
  4. start with 1
  5. increment by 1
  6. nocache;

說明:

minvalue:序列最小值

maxvalue/nomaxvalue:序列最大值/沒有最大值

start with 1:序列從1開始

increment by 1:每次增加1

cache/nocache:nocache不緩存。cache緩存。開啟緩存,效率高,只是如果數據庫宕機了,緩存丟失,會出現序列跳號情況。

2、查看已有sequence

[sql] view plain copy
  1. select * from user_sequences;

3、刪除指定sequence

[sql] view plain copy
  1. DROP SEQUENCE SEQ_ON_USER;

4、查看指定sequence的當前值:

兩種方式:

[sql] view plain copy
  1. select last_number from user_sequences wheresequence_name=‘SEQ_ON_USER‘;

[sql] view plain copy
  1. select SEQ_ON_USER.nextval from sys.dual;

5、創建觸發器使用sequence設置主鍵自動插入。

[sql] view plain copy
  1. create or replace trigger "SEQ_ON_USER_GENERATOR" before
  2. insert on databasename1.T_USER for each row
  3. declare
  4. mid number,
  5. begin
  6. select SEQ_ON_USER.nextval into mid from dual;
  7. :new.id:=mid;
  8. end
  9. create trigger SEQ_ON_USER_Trigger
  10. before insert on T_USER for each row
  11. begin
  12. select SEQ_ON_USER.nextval into :new.id from dual;
  13. end SEQ_ON_USER_Trigger;

6、代碼中使用sequence.nextval插入主鍵值。

Sequence在Oracle中的使用