デフォルト値

PostgreSQL 9.1.1文書
前のページ | 巻戻し | 第 5章データ定義 | 早送り | 次のページ

# 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.15を参照してください）。特に省略した形として以下のようにも記述できます。

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

省略形である`SERIAL`は項8.1.4で詳しく述べられています。

前のページ | ホーム | 次のページ
テーブルの基本 | 上に戻る | 制約