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.