連番型

PosgtreSQL で利用できるデータ型の中で連番型の使い方について解説します。連番型を設定したカラムには自動で連続する値が格納されていきます。連番型には smallserial, serial, bigserial の3つのデータ型が存在します。

(Last modified: )

連番型の使い方

連番型には扱える数の範囲が異なる 3 つのデータ型があります。

smallserial
2バイト
1から32767
別名:serial2

serial
4バイト
1から2147483647
別名:serial4

bigserial
8バイト
1から9223372036854775807
別名:serial8

連番型が設定されたカラムが含まれるテーブルにデータを追加する場合、連番型のカラムには直接値を指定するのではなくデフォルト値が格納されるようにしてください。すると自動的に今まで格納されてきた値よりも大きい値(通常は 1 大きい値)が自動で格納されます。(MySQL でいうところのカラムに AUTO_INCREMENT を設定したものと似ています)。

※ 連番型は内部的にシーケンスを利用して実装されています。

例として次のようなテーブルを作成しました。

create table myfriends (id serial, name varchar(10), address varchar(10));

連番型の使い方(1)

それではテーブルにデータを追加します。 id カラムのデータ型は連番型の serial ですので、 id には値を指定せずにデータを追加します。

insert into myfriends (name, address) values ('Kudou', 'Kyoto');

連番型の使い方(2)

それでは myfriends テーブルのデータを取得して確認してみます

select * from myfriends;

連番型の使い方(3)

id カラムには 最初の値である 1 が格納されています。

それではあと 3 つほどデータを追加します。

insert into myfriends (name, address) values ('Honda', 'Tokyo'), ('Etou', 'Osaka'), ('Numata', 'Tokyo');

連番型の使い方(4)

再度 myfriends テーブルのデータを取得して確認してみます

連番型の使い方(5)

id カラムには自動的に連続した値が格納されており、 2、 3、 4 の値が格納されています。このように連番型のデータ型をカラムに設定した場合、デフォルトの値を指定すると連続した値が自動的に格納されます。(なおあくまで前回格納されたよりも大きい値が格納されるだけで、必ず連続した値になるわけではありません)。

連番型が設定されたカラムに値を指定してデータを追加する

連番型が設定されたカラムにデフォルト値が格納されるようにデータを追加すると、自動的に連続した値が格納されますが、任意の値を指定してデータを追加することもできます。

現在 4 つのデータを追加した状態で、次にデータを追加する時に連番型が設定された id カラムにデフォルトの値を格納するようにすると 5 が格納される状態です。

連番型が設定されたカラムに値を指定してデータを追加する(1)

ここで id カラムにも値を指定してデータを追加してみます。

insert into myfriends values (7, 'Nishi', 'Fukuoka');

連番型が設定されたカラムに値を指定してデータを追加する(2)

データを追加したあとにテーブルからデータを取得してみると指定した値がそのまま格納されています。このように連番型が設定されたカラムであっても値を指定してデータを追加することはできます。

ここでもう一度 id カラムにはデフォルト値が格納されるようにデータを追加したら id カラムには何の値が入るのか確認してみます。

insert into myfriends (name, address) values ('Hosono', 'Tokyo');

連番型が設定されたカラムに値を指定してデータを追加する(3)

データを追加したあとテーブルからデータを取得してみると、 id カラムには元々次に入る予定だった 5 が格納されました。

では id カラムにはデフォルト値が格納されるようにあと 2 つデータを追加してみます。

insert into myfriends (name, address) values ('Baba', 'Nagoya'), ('Kamata', 'Akita');

連番型が設定されたカラムに値を指定してデータを追加する(4)

id カラムには前回格納された 5 の値の次の値である 6 と 7 が格納されました。既に id カラムに 7 という値が格納されたデータを手動で追加済みでしたが、重複している値があるかどうか関係なく連続した値が格納されました。

このように連番型が設定されたカラムに値を指定してデータを追加することもできますが、そのデータは自動で格納される値には反映がされないので注意が必要です。

-- --

PosgtreSQL で利用できるデータ型の中で連番型の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。