このサイトにはプロモーションが含まれます

シーケンスがあまり好きになれない

シーケンスとは

シーケンスとは連番を作り出す為にOracleが用意してくれているオブジェクトです。

1,2,3,4,5…と連続したデータを発動するので、プライマリーキーやユニークキーなどによく使用されます。

MySQLで言うところのAutoIncrementと似たような機能となっています。

やんやん

プログラマーとしてLEMP環境に主に生息しており、DevOps 的な立ち回りをしながらご飯を食べている当ブログの管理人のやんやんと申します。
最近はTmux使うのを辞めました。

 

シーケンスのコード

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

Twitterでフォローしよう

読んでみーな
おすすめの記事