バージョンごとのドキュメント一覧

5.2. デフォルト値 #

<title>Default Values</title>

A column can be assigned a default value. When a new row is created and no values are specified for some of the columns, those columns will be filled with their respective default values. A data manipulation command can also request explicitly that a column be set to its default value, without having to know what that value is. (Details about data manipulation commands are in <xref linkend="dml"/>.) 列にはデフォルトの値を割り当てることができます。 新しく作成された行のいくつかの列に値が指定されていない場合、そうした空欄にはそれぞれの列のデフォルト値が入ります。 データ操作コマンドを使用して、列を(どのような値かを把握する必要なく)デフォルト値に設定するように明示的に要求することもできます。 (データ操作コマンドの詳細については第6章を参照してください。)

<indexterm><primary>null value</primary><secondary>default value</secondary></indexterm> If no default value is declared explicitly, the default value is the null value. This usually makes sense because a null value can be considered to represent unknown data. 明示的に宣言されたデフォルト値がない場合は、デフォルト値はNULL値になります。 NULL値は不明のデータを表すものとみなすことができるので、通常はこの方法で問題ありません。

In a table definition, default values are listed after the column data type. For example: テーブル定義では、デフォルト値は列データ型の後に列挙されています。 例を示します。

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

The default value can be an expression, which will be evaluated whenever the default value is inserted (<emphasis>not</emphasis> when the table is created). A common example is for a <type>timestamp</type> column to have a default of <literal>CURRENT_TIMESTAMP</literal>, so that it gets set to the time of row insertion. Another common example is generating a <quote>serial number</quote> for each row. In <productname>PostgreSQL</productname> this is typically done by something like: デフォルト値を式にすることが可能で、それはデフォルト値が挿入される時はいつでも(テーブルが作成されたときではありません)評価されます。よくある例として、timestamp列が挿入時の時刻に設定されるように、その列はデフォルトのCURRENT_TIMESTAMPを持つことができます。もう1つの例としては、各行に通番を割り振る場合です。 PostgreSQLでは、典型的に以下のように記述することにより生成されます。

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

where the <literal>nextval()</literal> function supplies successive values from a <firstterm>sequence object</firstterm> (see <xref linkend="functions-sequence"/>). This arrangement is sufficiently common that there's a special shorthand for it: ここで、nextval()関数が、シーケンスオブジェクトから連続した値を生成します(9.17を参照してください)。 これは非常によく使われるやり方なので、以下のような特別な短縮記法が用意されています。

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

The <literal>SERIAL</literal> shorthand is discussed further in <xref linkend="datatype-serial"/>. 省略形であるSERIAL8.1.4で詳しく述べられています。