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, Bytes). Eine Breite von Null bezeichnet 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ärdatenstrom
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 von CREATE und ALTER verwendeten SQL Abfragezeichenfolgen auf. Weitere Informationen finden Sie unter SQL Syntax.

Rückgabewert SQL-Syntax
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

 

Wenn der Buchstabe nicht großgeschrieben ist, sollte die SQL-Anweisung mit NOT NULL angefügt werden.

Rückgabewert SQL-Syntax
s0 LONGCHAR NOT NULL

 

Das Installationsprogramm beschränkt die Länge der Spalten nicht intern auf den durch das Spaltendefinitionsformat angegebenen Wert. Wenn die in ein Feld eingegebenen Daten die angegebene Spaltenlänge überschreitet, schlägt das Paket die Paketüberprüfung fehl. Um die Überprüfung in diesem Fall zu übergeben, 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 von MsiDatabaseExport zu exportieren, die exportierte IDT-Datei zu bearbeiten und dann die Tabelle mithilfe von MsiDatabaseImport zu importieren. Autoren können die Spaltendatentypen, Nullierbarkeit oder Lokalisierungsattribute von Spalten in Standardtabellen nicht ändern. Autoren können benutzerdefinierte Tabellen erstellen, in denen Spalten mit allen Spaltenattributen enthalten sind.

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 aufweist, erhöht MsiDatabaseMerge die Spaltenlänge in der Zieldatenbank auf die Länge in der Referenzdatenbank.

Wenn Sie Mergmod.dll Version 2.0 verwenden, ändert die Anwendung eines Seriendruckmoduls niemals die Länge der Spalten oder spaltentypen einer vorhandenen Datenbanktabelle in einer .msi Datei. Die Anwendung eines Seriendruckmoduls kann jedoch das Schema einer vorhandenen Datenbanktabelle ä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.