DEFAULT制約

カラムにDEFAULT制約を設定した場合、INSERT文などでデータを追加する時に値が指定されなかった時に格納されるデフォルトの値を指定することができます。書式は次の通りです。

CREATE TABLE テーブル名(カラム名 DEFAULT 値, ...);

値にはNULL、数値、文字列が指定できます。

具体的には次のように記述します。

create table product(id integer, name text DEFAULT '商品名');

サンプル

では実際に試してみます。

p12-1

「product」テーブルを作成し、「name」カラムと「price」カラムにそれぞれDEFAULT制約を設定しました。

ではデータをいくつか追加してみます。

p12-2

「name」カラムにはDEFAULT制約が設定されておりデフォルトの値は'未定'です。また「price」カラムにもDEFAULT制約が設定されておりデフォルトの値は0です。DEFAULT制約が設定されているカラムの値を指定せずにINSERT文を実行した場合には、デフォルトの値が格納されます。

CURRENT_TIME, CURRENT_DATE, CURRENT_TIMESTAMP

DEFAULT制約を設定する時に合わせて指定するデフォルトの値には、次の3つの特殊な値を指定することもできます。

CURRENT_TIME         HH:MM:SS形式
CURRENT_DATE         YYYY-MM-DD形式
CURRENT_TIMESTAMP    YYYY-MM-DD HH:MM:SS形式

それぞれINSERT文が実行された時の日付や時刻を取得し、指定の形式の値がデフォルトの値として設定されます。(ただしタイムゾーンはUTCです)。その為、デフォルトの値としてどのような値が格納されるのかはデータが追加した時の日時によって変わります。

では実際に試してみます。

p12-3

tsカラムにDEFAULT制約を設定し値としてCURRENT_TIMESTAMPを指定しました。データを追加して確認してみると、データを追加した時の日時と時刻を取得し「YYYY-MM-DD HH:MM:SS」の形式の値としてカラムに格納されていることが分かります。