デフォルト値

DB2® が一部のデフォルト値を定義し、お客様が他のデフォルト値を定義 (CREATE TABLE または ALTER TABLE ステートメント内で DEFAULT 文節を使用) します。

ある列が NOT NULL WITH DEFAULT で定義されている場合、または NOT NULL が無指定の場合、DB2 は、列に対する値が挿入またはロードで指定されていない場合はいつも、その列に対するデフォルト値を格納します。ある列が NOT NULL として定義されている場合、DB2 デフォルト値を提供しません。

DB2 定義のデフォルト値

DB2 は、ROWID 列に対してはデフォルト値を生成します。また、DB2 は、ユーザーが NOT NULL WITH DEFAULT 指定で定義している列に対してデフォルト値を決定しますが、特定の値が指定されていない列に対しては、下記テーブルに示したとおりにデフォルト値を決定します。

表 1. データ・タイプに対する DB2 定義のデフォルト値
以下の列に対して データ・タイプ デフォルト
数値 SMALLINT、 INTEGER、 BIGINT、 DECIMAL、 NUMERIC、 REAL、 DOUBLE、 DECFLOAT、 または FLOAT 0
固定長ストリング CHAR または GRAPHIC
BINARY
ブランク
16 進数のゼロ
可変長ストリング VARCHAR、 CLOB、 VARGRAPHIC、 DBCLOB、 VARBINARY、 または BLOB 空ストリング
日付 DATE CURRENT DATE
時刻 TIME CURRENT TIME
タイム・スタンプ TIMESTAMP CURRENT TIMESTAMP
ROWID ROWID DB2 生成

ユーザー定義のデフォルト値

以下のような特別のデフォルト値を指定できます。

DEFAULT 'N/A'

あるデフォルト値を選択すると、その列のデータ・タイプにデフォルト値を割り当て可能である必要があります。例えば、すべてのストリング定数は VARCHAR であるとします。VARCHAR ストリング定数を CHAR 列に対するデフォルトとして使用できます (たとえ、そのタイプが完全に一致していなくても使用可能)。ただし、数値データ・タイプの列に対してデフォルト値「N/A」を使用することはできません。

次の例では、その列は CHAR (固定長) として定義されています。参照される特殊レジスター (USER および CURRENT SQLID) には、可変長の値が含まれます。

例: ある表のすべての行を挿入する各ユーザー・レコードが必要な場合、以下の 2 つの列を追加で指定した表を定義してください。
PRIMARY_ID      CHAR(8)     WITH DEFAULT USER,
SQL_ID          CHAR(8)     WITH DEFAULT CURRENT SQLID,

次に、これらの列を除外したビューを作成して、基本表の代わりにこのビューを、ユーザーに更新させるようにすることができます。次に、DB2 は、デフォルトとして 1 次許可 ID とその処理の SQL ID を追加します。

既存の表に列を追加する場合、その列を NULL 可能として、あるいは非ヌルとしてデフォルトで定義する必要があります。既存の表に列を追加し、デフォルトで非ヌルを指定するものと仮定します。その列にデータが追加される前に DB2 がその表から読み取る場合、リトリーブする列値はデフォルト値です。 ほとんど例外なく、リトリーブ用のデフォルト値は挿入用のデフォルト値と同じです。

ROWID のデフォルト値

DB2 は、ROWID 列に対するデフォルト値を常時生成します。