シーケンスとは
シーケンスとは連番を作り出す為にOracleが用意してくれているオブジェクトです。
1,2,3,4,5…と連続したデータを発動するので、プライマリーキーやユニークキーなどによく使用されます。
MySQLで言うところのAutoIncrementと似たような機能となっています。
シーケンスのコード
CREATE文
CREATE SEQUENCE seqTest
START WITH 1
INCREMENT BY 1
MAXVALUE 1000
NOCYCLE;
取得文
--連番発行
SQL> select seqTest.nextval from dual;
NEXTVAL
----------
1
--現在の番号取得
SQL> select seqTest.currval from dual;
CURRVAL
----------
1
使用例
SQL> desc TBLSEQ;
Name Null? Type
----------------------------------------- -------- ----------------------------
NO NOT NULL NUMBER(3)
NAME VARCHAR2(10)
--==================
--test0テーブルの値を使用
--==================
SQL> INSERT INTO TBLseq
select seqTest.nextval
,concat(TO_CHAR(no) , concat(name,TO_CHAR(no2)))
from test0;
20 rows created.
SQL> select * from tblseq;
NO NAME
---------- ----------
1 0a0
2 0b1
3 0a2
4 0b3
5 1a0
6 1b2
7 1a3
8 1b4
9 2a0
10 2b1
11 2a2
NO NAME
---------- ----------
12 2b3
13 7a0
14 7b1
15 7a2
16 7b3
17 9a0
18 9b1
19 9a2
20 9b3
20 rows selected.
複数セッションでのシーケンスの扱い
先程の使用例で20までの連番を出力したシーケンスを別のセッションから参照すると、続きの連番から出力されます。
--別セッションに接続
SQL>sqlplus〜〜〜
--シーケンスの発行
SQL> select seqtest.nextval from dual;
NEXTVAL
----------
21