Oracleのシーケンス(sequence)オブジェクトの基本的な使い方

  • OracleでAutoIncrementってシーケンス?
  • シーケンスってどう使うの?
  • Oracleについて勉強中!

Oracleにおいてオートインクリメントに変わる機能がシーケンスオブジェクトのようです。

Oracleシーケンス(sequence)で取得した連番をキーに使ったりしてますが、如何せんOracleをよく知らないもので・・・。

ということで、Oracleシーケンス(sequence)オブジェクトについて調べてみました。

基本的なことと簡単な使い方をまとめてみたので、同じようにOracleのシーケンス(sequence)をまだ知らない人の参考になれば嬉しいです。

この記事でわかること
  • Oracleシーケンスオブジェクトの基本操作
  • sequenceの作成・変更・削除
  • sequenceの取得・インクリメント
目次

Oracleのシーケンス(sequence)オブジェクトの基本的な使い方

シーケンス(sequence)の作成  

CREATE SEQUENCE文を使ってシーケンスオブジェクトの作成を行います。  

CREATE SEQUENCE {seq名} 
  START WITH 1 
  INCREMENT BY 1 
  MAXVALUE 500 
  MINVALUE 1 
  CYCLE 
  CACHE 10
;

設定している内容の概要はこんな感じ

パラメーター内容
START WITH開始する値
INCREMENT BY増減する値
MAXVALUE n / NOMAXVALUEシーケンス最大値
MINVALUE n / NONMINVALUEシーケンス最小値
(増分がマイナスの場合とか)
CYCLE / NOCYCLE最大値にいった時にシーケンスをループさせるか
CACHE / NOCACHEメモリー上に保存する数
(default=20)

シーケンス(sequence)の変更

ALTER SEQUENCE文で既存シーケンスオブジェクトに対しての変更を行います。

ALTER SEQUENCE {seq名}
  INCREMENT BY 1
  MAXVALUE 1000
  MINVALUE 1
  CYCLE
;

ALTERでの変更時はSTART WITHは指定できません!

シーケンス(sequence)の削除

DROP SEQUENCE文でシーケンスオブジェクトの削除を行います。

SELECT {seq名}.currval FROM dual;

Oracleでシーケンス(sequence)の使い方

シーケンス(sequence)の現在の値を取得

sequenceオブジェクトの現在値が取得するには以下のSQLで取得できます。

SELECT {seq名}.currval FROM dual;

シーケンス(sequence)の次の値を取得

下のSQLで現在値にincrement分加算した値が取得できます。

SELECT {seq名}.nextval FROM dual;

Oracleのシーケンス(sequence)オブジェクトのまとめ

シーケンス(sequence)オブジェクトについての基本的なことはこんな感じです。  

これで基本的な使い方はできると思いますで、Oracleでシーケンス(sequence)を使うときの参考になれば幸いです。

シーケンスの現在値を変更する方法は、こちらの別記事を参照ください。


よかったらシェアしてね!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次
閉じる