【PostgreSQL】自動ID付与 ~ SERIAL / BIGSERIAL / SMALLSERIAL ~

■ はじめに

MySQL でいう AUTO_INCREMENT 属性みたいに
自動的に ID を付与してくれるテーブルを作る必要ができたので
調べてメモる。

目次

【1】自動ID付与
【2】連番型「SERIAL / BIGSERIAL / SMALLSERIAL」
【3】サンプル
【4】おまけ:Amazon Redshift に関して

【1】自動ID付与

 PostgreSQL の場合、
連番型「SERIAL / BIGSERIAL / SMALLSERIAL」
っていう数値のデータ型を定義する。

【2】連番型「SERIAL / BIGSERIAL / SMALLSERIAL」

https://www.postgresql.jp/docs/9.2/datatype-numeric.html
https://www.postgresql.org/docs/13/datatype-numeric.html

より抜粋
型名 格納サイズ 説明 範囲
smallserial 2バイト 狭範囲自動整数 1から32767
serial 4バイト 自動増分整数 1から2147483647
bigserial 8バイト 広範囲自動増分整数 1から9223372036854775807

【3】サンプル

テーブル

CREATE TABLE serial_demo (
    id BIGSERIAL NOT NULL,
    id2 SERIAL NOT NULL,
    id3 SMALLSERIAL NOT NULL,
    name VARCHAR(255) NOT NULL,
    PRIMARY KEY (id)
);

データ挿入&確認

-- データ挿入
INSERT INTO serial_demo("name") VALUES ('Mike'), ('Sam'), ('Kevin');

-- データ確認
SELECT * FROM serial_demo;

出力結果

id,id2,id3,name
1,1,1,Mike
2,2,2,Sam
3,3,3,Kevin

【4】おまけ:Amazon Redshift に関して

 Redshift では対応されていない。
詳細は、以下の関連記事を参照のこと。

Amazon Redshift ~ 他DB・サービスとの違い ~
https://dk521123.hatenablog.com/entry/2021/08/29/000000
Amazon Redshift ~ 自動採番 / IDENTITY ~
https://dk521123.hatenablog.com/entry/2021/08/31/194134

参考文献

https://qiita.com/shonansurvivors/items/4522f15c5e9a30860bc5

関連記事

PostgreSQL ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2014/03/08/000100
Amazon Redshift ~ 他DB・サービスとの違い ~
https://dk521123.hatenablog.com/entry/2021/08/29/000000
Amazon Redshift ~ 自動採番 / IDENTITY ~
https://dk521123.hatenablog.com/entry/2021/08/31/194134