PostgreSQL のシーケンスとは何なのか

SERIAL 型を使ってテーブルを作成:

f:id:matt-note:20180920152209p:plain

すると、型がシーケンスと表示されたものが自動で作成される:

f:id:matt-note:20180920155007p:plain

テーブルはわかるけど、シーケンスとは・・

f:id:matt-note:20180920160620p:plain

f:id:matt-note:20180920155508p:plain

とにかく、シーケンスは一意の識別子を持つ一行だけの特殊なテーブル。SERIAL を使うと CREATE SEQUENCE 文が実行されて *_seq という名前のシーケンスを自動で作成する。

また、integer 型以上のデータを持つ場合は、bigserial 型を使うとのこと。

 

なお、SERIAL の指定だけでは、UNIQUE,  PRIMARY KEY を指定しない:

f:id:matt-note:20180920175910p:plain

f:id:matt-note:20180920180051p:plain

ID に primary key の設定をする必要があった。

 

参考:

8.1. 数値データ型

 9.16. シーケンス操作関数

https://www.postgresql.jp/document/7.3/user/datatype.html