★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

5.2. デフォルト値

列にはデフォルトの値を割り当てることができます。 新しく作成された行のいくつかの列に値が指定されていない場合、そうした空欄にはそれぞれの列のデフォルト値が入ります。 データ操作コマンドを使用して、列を(どのような値かを把握する必要なく)デフォルト値に設定するように明示的に要求することもできます。 (データ操作コマンドの詳細については6章データ操作を参照してください。)

明示的に宣言されたデフォルト値がない場合は、デフォルト値はNULL値になります。 NULL値は不明のデータを表すものとみなすことができるので、通常はこの方法で問題ありません。

テーブル定義では、デフォルト値は列データ型の後に列挙されています。 例を示します。

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric DEFAULT 9.99
);

デフォルト値を式にすることが可能で、それはデフォルト値が挿入される時はいつでも(テーブルが作成されたときではありません)評価されます。よくある例として、timestamp列が挿入時の時刻に設定されるように、その列はデフォルトのCURRENT_TIMESTAMPを持つことができます。もう1つの例としては、各行に通番を割り振る場合です。 PostgreSQLでは、典型的に以下のように記述することにより生成されます。

CREATE TABLE products (
    product_no integer DEFAULT nextval('products_product_no_seq'),
    ...
);

ここで、nextval()関数が、シーケンスオブジェクトから連続した値を生成します(9.16. シーケンス操作関数を参照してください)。 これは非常によく使われるやり方なので、以下のような特別な短縮記法が用意されています。

CREATE TABLE products (
    product_no SERIAL,
    ...
);

省略形であるSERIAL8.1.4. 連番型で詳しく述べられています。