Formato definizione colonna

MsiViewGetColumnInfo e la proprietà ColumnInfo dell'oggetto View usano il formato seguente per descrivere le definizioni di colonna del database. Ogni colonna viene descritta da una stringa nel campo record corrispondente restituito dalla funzione o dalla proprietà. La stringa di definizione è costituita da una singola lettera che rappresenta il tipo di dati seguito dalla larghezza della colonna (in caratteri, in caso contrario, byte). Una larghezza di zero designa una larghezza non associato ,ad esempio campi di testo lunghi e flussi. Una lettera maiuscola indica che i valori Null sono consentiti nella colonna.

Descrittore di colonna Stringa di definizione
s? Stringa, lunghezza variabile (?=1-255)
s0 Stringa, lunghezza variabile
i2 Intero breve
i4 Long integer
v0 Flusso binario
G? Stringa temporanea (?=0-255)
J? Intero temporaneo (?=0,1,2,4)
O0 Oggetto temporaneo

 

Le stringhe usate per descrivere le colonne hanno la relazione seguente con le stringhe di query SQL usate da CREATE e ALTER. Per altre informazioni, vedere Sintassi SQL.

Valore restituito Sintassi 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 la lettera non è maiuscola, l'istruzione SQL deve essere aggiunta con NOT NULL.

Valore restituito Sintassi SQL
s0 LONGCHAR NOT NULL

 

Il programma di installazione non limita internamente la lunghezza delle colonne al valore specificato dal formato di definizione della colonna. Se i dati immessi in un campo superano la lunghezza di colonna specificata, il pacchetto non riesce a passare la convalida del pacchetto. Per passare la convalida in questo caso, è necessario modificare i dati o lo schema del database. L'unico significa modificare la lunghezza della colonna di una tabella standard esportando la tabella usando MsiDatabaseExport, modificando il file .idt esportato e quindi importando la tabella usando MsiDatabaseImport. Gli autori non possono modificare i tipi di dati di colonna, nullability o attributi di localizzazione di qualsiasi colonna nelle tabelle standard. Gli autori possono creare tabelle personalizzate con colonne con attributi di colonna.

Quando si usa MsiDatabaseMerge per unire un database di riferimento in un database di destinazione, i nomi delle colonne, il numero di chiavi primarie e i tipi di dati di colonna devono corrispondere. MsiDatabaseMerge ignora gli attributi di localizzazione e lunghezza della colonna. Se una colonna nel database di riferimento ha una lunghezza pari a 0 o maggiore della lunghezza della colonna nel database di destinazione, MsiDatabaseMerge aumenta la lunghezza della colonna nel database di destinazione alla lunghezza del database di riferimento.

Quando si usa Mergmod.dll versione 2.0, l'applicazione di un modulo di merge in un file di .msi non modifica mai la lunghezza delle colonne o i tipi di colonna di una tabella di database esistente. L'applicazione di un modulo di tipo merge può tuttavia modificare lo schema di una tabella di database esistente se il modulo aggiunge nuove colonne a una tabella per cui è valido aggiungere colonne. Quando si usa una versione Mergemod.dll minore della versione 2.0, l'applicazione di un modulo di merge non modifica mai la lunghezza delle colonne e non modifica mai lo schema del database di destinazione.