- 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)を使うときの参考になれば幸いです。
シーケンスの現在値を変更する方法は、こちらの別記事を参照ください。
Oracleのシーケンス(sequence)オブジェクトを変更する3つのやりかた
Oracleシーケンスの値を変更したいAlterでやろうと思ったら出来ないじゃん! 別の記事で、Oracleシーケンスオブジェクトの基本的な使い方をまとめましたが、今回はシー…
コメント