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.