--建立一個sequence
HR@prod> create sequence test_seq
2 increment by 10
3 start with 100
4 maxvalue 200
5 minvalue 10
6 cycle
7 cache 10;
Sequence created.
--建立一個樣例表
HR@prod> create table test (id number,name varchar2(20));
Table created.
--作為insert的一個value
HR@prod> insert into test values(test_seq.nextval,'mary');
1 row created.
HR@prod> select * from test;
ID NAME
---------- --------------------
100 mary
HR@prod> select test_seq.currval from dual;
CURRVAL
----------
100
HR@prod> select test_seq.nextval from dual;
NEXTVAL
110
HR@prod> insert into test values(test_seq.nextval,'mike');
120 mike
200
--序列循環使用,到達頂點,從最小值重新開始序列。如果沒有最小值,從1開始;
10
*************************
HR@prod> col sequence_name for a20
HR@prod> select sequence_name,min_value,max_value,increment_by,last_number from user_sequences where sequence_name='TEST_SEQ'
SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER
-------------------- ---------- ---------- ------------ -----------
TEST_SEQ 10 200 10 110
************
沒有cache的sequence
HR@prod> create sequence test_seq2
increment by 2
start with 10
maxvalue 100
minvalue 5
cycle
nocache;
HR@prod> select test_seq2.currval from dual;
16
HR@prod> select sequence_name,min_value,max_value,increment_by,last_number from user_sequences where sequence_name='TEST_SEQ2'
TEST_SEQ2 5 100 2 18