【実践!PostreSQL】「CREATE SEQUENCE文」でシーケンスを作成する


シーケンスとは

連続して発生する順番(連番)のことで、行番号のような、データを一意に特定するための列を作りたいときに使うと良い
PostgreSQLでは「CREATE SEQUENCE文」を使うことで、シーケンスを作成することができる

使い方

目次
- ①シーケンスを作成する
- ②シーケンスの開始番号を設定する
- ③最新のシーケンス番号を取得する
- ④シーケンス番号を進めて、最新の番号を取得する
- (おまけ)「CREATE SEQUENCE」のかゆいところに手が届くオプション

①シーケンスを作成する

CREATE SEQUENCE シーケンス名

「シーケンス名」→「テーブル名.シーケンス名」にすると丁寧

②シーケンスの開始番号を設定する

create sequence テーブル名.シーケンス名
    SELECT setval('テーブル名.シーケンス名', 番号)

すでにいくつかのシーケンス番号が振られているテーブルを複製した場合に、シーケンス番号の現在値を設定する。
※このケースではsetvalしておかないと、シーケンス番号は1から開始されるため重複エラーが起きてしまう

③最新のシーケンス番号を取得する

select currval('シーケンス名')

④シーケンス番号を進めて、最新の番号を取得する

select nextval('シーケンス名')

(おまけ)「CREATE SEQUENCE」のかゆいところに手が届くオプション

select nextval('シーケンス名')
    INCREMENT BY 1
    MINVALUE 5
    MAXVALUE 999
    START WITH 10
    CYCLE;

「INCREMENT」
値の増加量を指定できる(2を設定すれば、2ずつ増加するシーケンスになる)
「MINVALUE」
シーケンスとして作成する最小値を指定
「MAXVALUE」
シーケンスとして作成する最大値を指定
「START WITH」
任意の数からシーケンス番号を開始することができる
「CYCLE」
シーケンスが限界値に達した時、そのシーケンスを周回させることができる。(デフォルトはNO CYCLE)