Formato de definição de coluna

As propriedades MsiViewGetColumnInfo e ColumnInfo do objeto View usam o formato a seguir para descrever as definições de coluna do banco de dados. Cada coluna é descrita por uma cadeia de caracteres no campo de registro correspondente retornado pela função ou pela propriedade. A cadeia de caracteres de definição consiste em uma só letra que representa o tipo de dados seguido da largura da coluna (em caracteres quando aplicável, caso contrário, bytes). Uma largura igual a zero designa uma largura não limitada (por exemplo, fluxos e campos de texto longos). Uma letra maiúscula indica que valores nulos são permitidos na coluna.

Descritor de coluna Cadeia de caracteres de definição
s? Cadeia de caracteres, comprimento variável (?=1-255)
s0 Cadeia de caracteres, comprimento variável
i2 Inteiro curto
i4 Long integer
v0 Fluxo binário
g? Cadeia de caracteres temporária (?=0-255)
j? Inteiro temporário (?=0,1,2,4)
O0 Objeto temporário

 

As cadeias de caracteres usadas para descrever as colunas têm a relação a seguir com as cadeias de consulta SQL usadas por CREATE e ALTER. Para obter mais informações, confira Sintaxe SQL.

Valor retornado Sintaxe 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

 

Se a letra não estiver em maiúscula, acrescente NOT NULL à instrução SQL.

Valor retornado Sintaxe SQL
s0 LONGCHAR NOT NULL

 

O instalador não limita internamente o comprimento das colunas ao valor especificado pelo formato de definição da coluna. Se os dados inseridos em um campo excederem o comprimento de coluna especificado, o pacote não será aprovado na validação de pacote. Para ser aprovado na validação nesse caso, os dados ou o esquema de banco de dados precisam ser alterados. O único meio de alterar o comprimento da coluna de uma tabela padrão é exportando a tabela usando MsiDatabaseExport, editando o arquivo .idt exportado e importando a tabela usando MsiDatabaseImport. Os autores não podem alterar os tipos de dados de coluna, a nulidade nem os atributos de localização das colunas em tabelas padrão. Os autores podem criar tabelas personalizadas com colunas que tenham qualquer atributo de coluna.

Ao usar MsiDatabaseMerge para mesclar um banco de dados de referência em um banco de dados de destino, os nomes das colunas, o número de chaves primárias e os tipos de dados de colunas precisam ser correspondentes. MsiDatabaseMerge ignora os atributos de localização e comprimento da coluna. Se uma coluna do banco de dados de referência tiver um comprimento 0 ou maior que o comprimento dessa coluna no banco de dados de destino, MsiDatabaseMerge aumentará o comprimento da coluna no banco de dados de destino para o comprimento do banco de dados de referência.

Ao usar o Mergemod.dll versão 2.0, a aplicação de um módulo de mesclagem a um arquivo .msi nunca altera o comprimento das colunas ou os tipos de colunas de uma tabela de banco de dados existente. No entanto, a aplicação de um módulo de mesclagem poderá alterar o esquema de uma tabela de banco de dados existente se o módulo adicionar novas colunas a uma tabela para a qual é válido adicionar colunas. Ao usar uma versão do Mergemod.dll inferior à versão 2.0, a aplicação de um módulo de mesclagem nunca altera o comprimento das colunas nem o esquema do banco de dados de destino.