表列のデフォルト値
Db2 は、いくつかのデフォルト値を定義し、その他を定義します (CREATE TABLE または ALTER TABLE ステートメント内の DEFAULT 節を使用して)。
列が NOT NULL WITH DEFAULT として定義されている場合、または NOT NULL を指定していない場合、 Db2 は、挿入またはロードでその列に値が指定されていない場合、その列にデフォルト値を格納します。 列が NOT NULL と定義されている場合、 Db2 はデフォルト値を供給しません。
Db2 によって定義されるデフォルト値
Db2 ROWID列のデフォルト値を生成します。 Db2 また、次の表に示すように、NOT NULL WITH DEFAULTでユーザーが定義するが、特定の値が指定されていない列のデフォルト値も決定します。
| 以下の列に対して | Data types | デフォルト |
|---|---|---|
| 数値 | SMALLINT、 INTEGER、 BIGINT、 DECIMAL、 NUMERIC、 REAL、 DOUBLE、 DECFLOAT、 または FLOAT | 0 |
| 固定長ストリング | CHAR または GRAPHIC BINARY
|
ブランク 16 進数のゼロ
|
| 可変長ストリング | VARCHAR、 CLOB、 VARGRAPHIC、 DBCLOB、 VARBINARY、 または BLOB | 空ストリング |
| 日付 | 日付 | CURRENT DATE |
| 時刻 | 時刻 | 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 そして、デフォルトでは、主たる認証IDとプロセスのSQLIDを追加します。
既存の表に列を追加する場合、その列を NULL 可能として、あるいは非ヌルとしてデフォルトで定義する必要があります。 既存の表に列を追加し、デフォルトで非ヌルを指定するものと仮定します。 Db2 が列にデータを追加する前にテーブルから読み取った場合、取得される列の値はデフォルト値となります。 ほとんど例外なく、リトリーブ用のデフォルト値は挿入用のデフォルト値と同じです。
ROWID のデフォルト値
Db2 常にROWID列のデフォルト値を生成します。