シーケンス(順序)とは、一意な整数を生成することができる順序番号ジェネレータ(生成器)です。順序はスキーマ・オブジェクトです。

スポンサーリンク

シーケンスを作成する (CREATE SEQUENCE)

シーケンスを作成するには、SQLCREATE SEQUENCE文を使用する。

CREATE SEQUENCE empno;

シーケンスを変更する (ALTER SEQUENCE)

シーケンスを変更するには、SQLのALTER SEQUENCE文を使用する。

ALTER SEQUENCE empno CYCLE;

シーケンスを削除する (DROP SEQUENCE)

シーケンスを削除するには、SQLのDROP SEQUENCE文を使用する。

DROP SEQUENCE empno;

シーケンスを取得する (NEXTVAL)

順序から新たな順序値を生成するには、NEXTVAL擬似列を参照します。NEXTVAL擬似列を参照する構文は次のとおりです。

sequence.NEXTVAL

SELECT文で新たに順序値を生成するには、FROM句にDUAL表を指定します。SELECT文で新たに順序値を生成する例を次に示します。

SQL> SELECT customerid_seq.NEXTVAL FROM DUAL;

   NEXTVAL
----------
         1

SQL> SELECT customerid_seq.NEXTVAL FROM DUAL;

   NEXTVAL
----------
         2

SQL>

INSERT文で順序を使用する例を次に示します。

INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (empno.NEXTVAL, '堀内まり菜', 'CHAIRMAN', NULL, '10-04-01', 5000, NULL, 10);

UPDATE文で順序を使用する例を次に示します。

UPDATE customer SET customer_id = customerid_seq.NEXTVAL WHERE customer_name = '矢島舞美';

なお、トランザクションをロールバックしても、シーケンス番号は元に戻らない。

シーケンスを確認する (CURRVAL)

NEXTVALでシーケンスを取得した後、CURRVAL擬似列でシーケンスの現在値を確認できる。

sequence.CURRVAL

SELECT文で最後に生成した順序値を参照するには、FROM句にDUAL表を指定します。SELECT文で最後に生成した値を参照する例を次に示します。

SQL> SELECT customerid_seq.CURRVAL FROM DUAL;

   CURRVAL
----------
         2

SQL>

NEXTVALでシーケンスを取得していない状態でCURRVALを参照すると、「ORA-08002: 順序sequence.CURRVALはこのセッションではまだ定義されていません」のエラーが発生する。

このエントリーをはてなブックマークに追加
スポンサーリンク