Compartir a través de


Formato de definición de columna

MsiViewGetColumnInfo y la propiedad ColumnInfo del objeto View usan el siguiente formato para describir las definiciones de las columnas de una base de datos. Cada columna se describe mediante una cadena en el campo de registro correspondiente devuelto por la función o la propiedad. La cadena de definición consta de una sola letra que representa el tipo de datos seguido del ancho de la columna (en caracteres si se puede, si no en bytes). Un ancho de cero designa un ancho sin enlazar (por ejemplo, campos de texto largos y secuencias). Una letra mayúscula indica que se permiten valores NULL en la columna.

Descriptor de columna Cadena de definición
s? Cadena, longitud variable (?=1-255)
s0 Cadena, longitud variable
i2 Entero corto
i4 Entero largo
v0 Secuencia binaria
g? Cadena temporal (?=0-255)
j? Entero temporal (?=0,1,2,4)
O0 Objeto temporal

 

Las cadenas que se usan para describir columnas tienen la siguiente relación con las cadenas de consulta SQL usadas por CREATE y ALTER. Para más información, consulte Sintaxis de SQL.

Valor devuelto Sintaxis de SQL
s0 LONGCHAR
l0 LONGCHAR LOCALIZABLE
s # CHAR(#)
s # CHARACTER(#)
l # CHAR(#) LOCALIZABLE
l # CHARACTER(#) LOCALIZABLE
i2 SHORT
i2 INT
i2 INTEGER
i4 LONG
v0 OBJECT

 

Si la letra no está en mayúsculas, la instrucción SQL debe anexarse con NOT NULL.

Valor devuelto Sintaxis de SQL
s0 LONGCHAR NOT NULL

 

El instalador no limita internamente la longitud de las columnas al valor especificado por el formato de definición de columna. Si los datos especificados en un campo superan la longitud de columna especificada, el paquete no supera la validación del paquete. Para pasar la validación en este caso, se deben cambiar los datos o el esquema de la base de datos. El único medio para cambiar la longitud de columna de una tabla estándar es exportar la tabla mediante MsiDatabaseExport, editando el archivo .idt exportado y, después, importando la tabla mediante MsiDatabaseImport. Los autores no pueden cambiar los tipos de datos de columna, la nulabilidad ni los atributos de localización de ninguna columna de las tablas estándar. Los autores pueden crear tablas personalizadas con columnas que tengan cualquier atributo de columna.

Al usar MsiDatabaseMerge para combinar una base de datos de referencia en una base de datos de destino, los nombres de columna, el número de claves principales y los tipos de datos de columna deben coincidir. MsiDatabaseMerge omite los atributos de localización y longitud de columna. Si una columna de la base de datos de referencia tiene una longitud de 0 o mayor que la longitud de esa columna en la base de datos de destino, MsiDatabaseMerge aumenta la longitud de la columna de la base de datos de destino hasta llegar a la longitud de la base de datos de referencia.

Al usar Mergmod.dll versión 2.0, la aplicación de un módulo de combinación a un archivo .msi nunca cambia la longitud de las columnas o los tipos de columna de una tabla de una base de datos existente. Sin embargo, la aplicación de un módulo de combinación puede cambiar el esquema de una tabla de base de datos existente si el módulo agrega nuevas columnas a una tabla para la que es válido agregar columnas. Cuando se usa una versión de Mergemod.dll inferior a la versión 2.0, la aplicación de un módulo de combinación nunca cambia la longitud de las columnas y nunca cambia el esquema de la base de datos de destino.