Compartir a través de


Formato de definición de columna

MsiViewGetColumnInfo y la propiedad ColumnInfodel objeto View usan el siguiente formato para describir las definiciones de columna de base de datos. Cada columna se describe mediante una cadena en el campo de registro correspondiente devuelto por la función o 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 cuando procede, bytes en caso contrario). 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 usadas para describir las columnas tienen la siguiente relación con las cadenas de consulta SQL usadas por CREATE y ALTER. Para obtener más información, vea sintaxis SQL.

Valor devuelto Sintaxis SQL
s0 LONGCHAR
l0 LONGCHAR LOCALIZABLE
s # CHAR(#)
s # CHARACTER(#)
l # CHAR(#) LOCALIZABLE
l # CHARACTER(#) LOCALIZABLE
i2 CORTO
i2 INT
i2 ENTERO
i4 LARGO
v0 OBJETO

 

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

Valor devuelto Sintaxis 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 puede pasar validación de paquetes. 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 exportando la tabla mediante MsiDatabaseExport, editando el archivo .idt exportado y 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 atributos 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 columna de la base de datos de destino 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 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 menor que 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.