Indeling van kolomdefinitie
MsiViewGetColumnInfo- en de eigenschap ColumnInfo van het object Weergave gebruiken de volgende indeling om databasekolomdefinities te beschrijven. Elke kolom wordt beschreven door een tekenreeks in het bijbehorende recordveld dat wordt geretourneerd door de functie of eigenschap. De definitietekenreeks bestaat uit één letter die het gegevenstype vertegenwoordigt, gevolgd door de breedte van de kolom (in tekens indien van toepassing, bytes anders). Een breedte van nul wijst een niet-afhankelijke breedte aan (bijvoorbeeld lange tekstvelden en stromen). Een hoofdletter geeft aan dat null-waarden zijn toegestaan in de kolom.
Kolomdescriptor | Definitietekenreeks |
---|---|
s? | Tekenreeks, variabele lengte (?=1-255) |
s0 | Tekenreeks, variabele lengte |
i2 | Kort geheel getal |
i4 | Lang geheel getal |
v0 | Binaire stroom |
g? | Tijdelijke tekenreeks (?=0-255) |
j? | Tijdelijk geheel getal (?=0,1,2,4) |
O0 | Tijdelijk object |
De tekenreeksen die worden gebruikt om kolommen te beschrijven, hebben de volgende relatie met de SQL-queryreeksen die worden gebruikt door CREATE en ALTER. Zie SQL-syntaxisvoor meer informatie.
Geretourneerde waarde | SQL-syntaxis |
---|---|
s0 | LONGCHAR |
l0 | LONGCHAR LOCALIZABLE |
s # | CHAR(#) |
s # | CHARACTER(#) |
l # | CHAR(#) LOCALIZABLE |
l # | CHARACTER(#) LOCALIZABLE |
i2 | KORT |
i2 | INT |
i2 | GEHEEL GETAL |
i4 | LANG |
v0 | OBJECT |
Als de letter geen hoofdletter heeft, moet de SQL-instructie worden toegevoegd aan NOT NULL.
Geretourneerde waarde | SQL-syntaxis |
---|---|
s0 | LONGCHAR NOT NULL |
Het installatieprogramma beperkt de lengte van kolommen niet intern tot de waarde die is opgegeven door de indeling van de kolomdefinitie. Als de in een veld ingevoerde gegevens de opgegeven kolomlengte overschrijden, kan het pakket niet pakketvalidatie doorgeven. Als u de validatie in dit geval wilt doorgeven, moeten de gegevens of het databaseschema worden gewijzigd. De enige methode om de kolomlengte van een standaardtabel te wijzigen, is door de tabel te exporteren met behulp van MsiDatabaseExport, het geëxporteerde .idt-bestand te bewerken en vervolgens de tabel te importeren met MsiDatabaseImport. Auteurs kunnen de kolomgegevenstypen, nullabiliteit of lokalisatiekenmerken van kolommen in standaardtabellen niet wijzigen. Auteurs kunnen aangepaste tabellen maken met kolommen met eventuele kolomkenmerken.
Wanneer u MsiDatabaseMerge- gebruikt om een referentiedatabase samen te voegen in een doeldatabase, moeten de kolomnamen, het aantal primaire sleutels en kolomgegevenstypen overeenkomen. MsiDatabaseMerge negeert de kenmerken lokalisatie en kolomlengte. Als een kolom in de referentiedatabase een lengte heeft van 0 of groter is dan de lengte van die kolom in de doeldatabase, verhoogt MsiDatabaseMerge de kolomlengte in de doeldatabase naar de lengte in de referentiedatabase.
Wanneer u Mergmod.dll versie 2.0 gebruikt, verandert de toepassing van een samenvoegmodule in een .msi bestand nooit de lengte van kolommen of de kolomtypen van een bestaande databasetabel. De toepassing van een samenvoegmodule kan echter het schema van een bestaande databasetabel wijzigen als de module nieuwe kolommen toevoegt aan een tabel waarvoor het geldig is om kolommen toe te voegen. Wanneer u een Mergemod.dll versie kleiner dan versie 2.0 gebruikt, verandert de toepassing van een samenvoegmodule nooit de lengte van kolommen en wordt het schema van de doeldatabase nooit gewijzigd.