こんにちは、さるまりんです。
タイトルのままです。
PostgreSQLのINTEGER
(整数型)の最大値は2,147,483,647です。
なぜこんなことをメモしているかというと、あるテーブルのidのカラムをSERIAL型で作っていました。
こんな感じです。
CREATE TABLE books (
id SERIAL,
title varchar(120) not null,
price integer not null
);
このテーブルにデータを追加するINSERT文はこんな感じです。
INSERT INTO books (title, price) VALUES ('明日の希望', 1980);
どんどん追加して行っているとあるところで
ERROR: integer out of range
とエラーになってしまいました。
整数値の範囲外。。。
PostgreSQLのドキュメントを見るとSERIAL
は4バイトの整数(four-byte integer)とあります。
4バイトの整数の最大値は231-1=2,147,483,647です。
これを超える数を扱うことはできないんですね。
21億以上となるのであればBIGSERIALを使うことになります。
内部的にはBIGINTでこちらは8バイトの整数保持できます。
最大値は263-1です。
9,223,372,036,854,775,807。
922京を超える大きな数です。
大体のデータはこれで扱えるかな。
いきなりデータが登録できないと焦ります。
どんなデータがテーブルに入るか作成前にちゃんと気をつけないとですね。
読んでくださってありがとうございます。
それではまた!