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.

Tabla 1. Valores predeterminados definidos por la " Db2" para tipos de datos
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.