Valores predeterminados para columnas de tabla
Db2 define algunos valores predeterminados y define otros (utilizando la cláusula DEFAULT en la sentencia CREATE TABLE o ALTER TABLE).
Si una columna está definida como NOT NULL WITH DEFAULT o si no especifica NOT NULL, Db2 almacena un valor predeterminado para una columna siempre que una inserción o carga no proporcione un valor para dicha columna. Si una columna está definida como NOT NULL, Db2 no proporciona un valor predeterminado.
Valores predeterminados definidos por Db2
Db2 genera un valor predeterminado para las columnas ROWID. Db2 también determina valores predeterminados para columnas que los usuarios definen con NOT NULL WITH DEFAULT, pero para las cuales no se especifica ningún valor específico, como se muestra en la siguiente tabla.
| Para columnas de... | Tipos de datos | Valor por omisión |
|---|---|---|
| Números | SMALLINT, INTEGER, BIGINT, DECIMAL, NUMERIC, REAL, DOUBLE, DECFLOAT o FLOAT | 0 |
| Series de longitud fija | CHAR o GRAPHIC BINARY
|
Blancos Ceros hexadecimales
|
| Series de longitud variable | VARCHAR, CLOB, VARGRAPHIC, DBCLOB, VARBINARY o BLOB | Serie vacía |
| Fechas | FECHA | CURRENT DATE |
| Veces | HORA | CURRENT TIME |
| Indicaciones de fecha y hora | TIMESTAMP | CURRENT TIMESTAMP |
| ROWID | ROWID | Generado por Db2 |
Valores por omisión definidos por el usuario
Puede especificar un valor por omisión determinado como, por ejemplo:
DEFAULT 'N/A'
Cuando elige un valor por omisión, debe poder asignarlo al tipo de datos de la columna. Por ejemplo, todas las constantes de tipo serie son VARCHAR. Puede utilizar una constante de tipo serie VARCHAR como valor por omisión para una columna CHAR aunque el tipo no coincida de forma exacta. Sin embargo, no puede especificar un valor por omisión 'N⁄A' para una columna con un tipo de datos numérico.
En el ejemplo siguiente, las columnas están definidas como CHAR (longitud fija). Los registros especiales (USER y CURRENT SQLID) a los que se hace referencia contienen valores de longitud variable.
Por ejemplo, si desea un registro de cada usuario que inserta cualquier fila de una tabla, defina la tabla con dos columnas adicionales:
PRIMARY_ID CHAR(8) WITH DEFAULT USER,
SQL_ID CHAR(8) WITH DEFAULT CURRENT SQLID,
A continuación, puede crear una vista que omita estas columnas y permita a los usuarios actualizar la vista en lugar de la tabla base. Db2 y, a continuación, añade, de forma predeterminada, el ID de autorización principal y el SQLID del proceso.
Cuando añada columnas a una tabla existente, debe definirlas como anulables o no nulas con valor por omisión. Suponga que añade una columna a una tabla existente y especifica no nulo con valor por omisión. Si Db2 lee de la tabla antes de añadir datos a la columna, los valores de columna que se recuperan son los valores predeterminados. Con muy pocas excepciones, los valores por omisión para una recuperación son iguales que los valores por omisión para una inserción.
Valores por omisión para ROWID
Db2 siempre genera los valores predeterminados para las columnas ROWID.