2015年3月10日火曜日

PostgreSQLでシーケンスを使う

PostgreSQLでのシーケンス作成やシーケンスの操作関数の纏め。

シーケンスの作成

create sequence文を使ってシーケンスを作成する。

全てデフォルトの設定でシーケンスを作成する。(初期値は1、増分値は1、キャッシュはなしなどになる)
create sequence test_seq;

一時的な(今のセッションだけに関連づいた)シーケンスを作成する。
シーケンス作成時に、temp(temporary)を指定すると今のセッションに関連づいた一時的なシーケンスが作られる。(セッションが終了すると、自動的に破棄される。)
既に同名のシーケンスが存在していた場合、一時的なシーケンスが優先されて既にあったシーケンスは見えなくなる。
create temp sequence test_seq;

シーケンスの情報を確認する

シーケンスを検索することで、今の状態が確認できる。
select * from シーケンス名


シーケンスを操作するための関数

nextvalで次の値を取得する。
select nextval('シーケンス名')

currvalで最後にnextvalされた値を取得できる。
select currval('シーケンス名')

setvalで現在の値を変更できる。この例だと、値を999に変更している。
select setval('シーケンス名', 999)