デフォルト値
DB2® が一部のデフォルト値を定義し、お客様が他のデフォルト値を定義 (CREATE TABLE または ALTER TABLE ステートメント内で DEFAULT 文節を使用) します。
ある列が NOT NULL WITH DEFAULT で定義されている場合、または NOT NULL が無指定の場合、DB2 は、列に対する値が挿入またはロードで指定されていない場合はいつも、その列に対するデフォルト値を格納します。ある列が NOT NULL として定義されている場合、DB2 デフォルト値を提供しません。
DB2 定義のデフォルト値
DB2 は、ROWID 列に対してはデフォルト値を生成します。また、DB2 は、ユーザーが NOT NULL WITH DEFAULT 指定で定義している列に対してデフォルト値を決定しますが、特定の値が指定されていない列に対しては、下記テーブルに示したとおりにデフォルト値を決定します。
以下の列に対して | データ・タイプ | デフォルト |
---|---|---|
数値 | 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) には、可変長の値が含まれます。
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 列に対するデフォルト値を常時生成します。