Spaltendefinitionsformat
MsiViewGetColumnInfo und die ColumnInfo-Eigenschaft des View-Objekts verwenden das folgende Format, um Datenbankspaltendefinitionen zu beschreiben. Jede Spalte wird durch eine Zeichenfolge im entsprechenden Datensatzfeld beschrieben, das von der Funktion oder Eigenschaft zurückgegeben wird. Die Definitionszeichenfolge besteht aus einem einzelnen Buchstaben, der den Datentyp gefolgt von der Breite der Spalte darstellt (in Zeichen, falls zutreffend, Byte). Eine Breite von Null bestimmt eine ungebundene Breite (z. B. lange Textfelder und Datenströme). Ein Großbuchstaben gibt an, dass Nullwerte in der Spalte zulässig sind.
Spaltendeskriptor | Definitionszeichenfolge |
---|---|
s? | Zeichenfolge, variable Länge (?=1-255) |
s0 | Zeichenfolge, variable Länge |
i2 | Kurze ganze Zahl |
i4 | Lange ganze Zahl |
v0 | Binärer Stream |
g? | Temporäre Zeichenfolge (?=0-255) |
j? | Temporäre ganze Zahl (?=0,1,2,4) |
O0 | Temporäres Objekt |
Die zum Beschreiben von Spalten verwendeten Zeichenfolgen weisen die folgende Beziehung zu den SQL-Abfragezeichenfolgen auf, die von CREATE und ALTER verwendet werden. Weitere Informationen finden Sie unter SQL-Syntax.
Zurückgegebener Wert | SQL-Syntax |
---|---|
s0 | LONGCHAR |
l0 | LONGCHAR LOCALIZABLE |
s # | CHAR(#) |
s # | CHARACTER(#) |
l # | CHAR(#) LOCALIZABLE |
l # | CHARACTER(#) LOCALIZABLE |
i2 | KURZ |
i2 | INT |
i2 | GANZE ZAHL |
i4 | LANG |
v0 | OBJEKT |
Wenn der Buchstabe nicht groß geschrieben ist, sollte die SQL-Anweisung mit NOT NULL angefügt werden.
Zurückgegebener Wert | SQL-Syntax |
---|---|
s0 | LONGCHAR NICHT NULL |
Das Installationsprogramm schränkt die Länge der Spalten nicht intern auf den wert ein, der durch das Spaltendefinitionsformat angegeben wird. Wenn die in ein Feld eingegebenen Daten die angegebene Spaltenlänge überschreiten, wird das Paket nicht Paketüberprüfungübergeben. Um die Überprüfung in diesem Fall zu bestehen, müssen entweder die Daten oder das Datenbankschema geändert werden. Die einzige Möglichkeit zum Ändern der Spaltenlänge einer Standardtabelle besteht darin, die Tabelle mithilfe MsiDatabaseExport-zu exportieren, die exportierte IDT-Datei zu bearbeiten und dann die Tabelle mit MsiDatabaseImportzu importieren. Autoren können die Spaltendatentypen, nullwerte oder Lokalisierungsattribute aller Spalten in Standardtabellen nicht ändern. Autoren können benutzerdefinierte Tabellen mit Spalten mit beliebigen Spaltenattributen erstellen.
Wenn Sie MsiDatabaseMerge zum Zusammenführen einer Referenzdatenbank in eine Zieldatenbank verwenden, müssen die Spaltennamen, die Anzahl der Primärschlüssel und Spaltendatentypen übereinstimmen. MsiDatabaseMerge ignoriert die Lokalisierungs- und Spaltenlängenattribute. Wenn eine Spalte in der Referenzdatenbank eine Länge von 0 oder größer als die Länge dieser Spalte in der Zieldatenbank hat, MsiDatabaseMerge die Spaltenlänge in der Zieldatenbank auf die Länge in der Referenzdatenbank erhöht.
Wenn Sie Mergmod.dll Version 2.0 verwenden, ändert die Anwendung eines Seriendruckmoduls in eine .msi Datei niemals die Länge der Spalten oder spaltentypen einer vorhandenen Datenbanktabelle. Die Anwendung eines Seriendruckmoduls kann das Schema einer vorhandenen Datenbanktabelle jedoch ändern, wenn das Modul einer Tabelle neue Spalten hinzufügt, für die es gültig ist, Spalten hinzuzufügen. Wenn Sie eine Mergemod.dll Version kleiner als Version 2.0 verwenden, ändert die Anwendung eines Seriendruckmoduls niemals die Länge der Spalten und ändert nie das Schema der Zieldatenbank.