Format de définition de colonne
MsiViewGetColumnInfo et la propriété ColumnInfo de l’objet View utilisent le format suivant pour décrire les définitions de colonnes de base de données. Chaque colonne est décrite par une chaîne dans le champ d’enregistrement correspondant retourné par la fonction ou la propriété. La chaîne de définition se compose d’une lettre unique représentant le type de données suivi de la largeur de la colonne (en caractères le cas échéant, octets dans le cas contraire). Une largeur de zéro désigne une largeur non délimitée (par exemple, les champs et flux de texte longs). Une lettre majuscule indique que les valeurs Null sont autorisées dans la colonne.
Descripteur de colonne | Chaîne de définition |
---|---|
s? | Chaîne, longueur variable (?=1-255) |
s0 | Chaîne, longueur variable |
i2 | Entier court |
i4 | Entier long |
v0 | Flux binaire |
g? | Chaîne temporaire (?=0-255) |
J | Entier temporaire (?=0,1,2,4) |
O0 | Objet temporaire |
Les chaînes utilisées pour décrire les colonnes ont la relation suivante avec les chaînes de requête SQL utilisées par CREATE et ALTER. Pour plus d’informations, consultez Syntaxe SQL.
Valeur renvoyée | Syntaxe 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 |
Si la lettre n’est pas en majuscule, l’instruction SQL doit être ajoutée avec NOT NULL.
Valeur renvoyée | Syntaxe SQL |
---|---|
s0 | LONGCHAR NOT NULL |
Le programme d’installation ne limite pas en interne la longueur des colonnes à la valeur spécifiée par le format de définition de colonne. Si les données entrées dans un champ dépassent la longueur de colonne spécifiée, le package ne réussit pas la validation du package. Pour réussir la validation dans ce cas, les données ou le schéma de base de données doivent être modifiés. La seule façon de modifier la longueur de colonne d’une table standard consiste à exporter la table à l’aide de MsiDatabaseExport, à modifier le fichier .idt exporté, puis à importer la table à l’aide de MsiDatabaseImport. Les auteurs ne peuvent pas modifier les types de données de colonne, la possibilité de valeur Null ou les attributs de localisation des colonnes des tables standard. Les auteurs peuvent créer des tables personnalisées avec des colonnes ayant n’importe quel attribut de colonne.
Lorsque vous utilisez MsiDatabaseMerge pour fusionner une base de données de référence dans une base de données cible, les noms de colonnes, le nombre de clés primaires et les types de données de colonne doivent correspondre. MsiDatabaseMerge ignore les attributs de localisation et de longueur de colonne. Si une colonne de la base de données de référence a une longueur égale ou supérieure à la longueur de cette colonne dans la base de données cible, MsiDatabaseMerge augmente la longueur de la colonne dans la base de données cible à la longueur de la base de données de référence.
Lorsque vous utilisez Mergmod.dll version 2.0, l’application d’un module de fusion à un fichier .msi ne modifie jamais la longueur des colonnes ou les types de colonnes d’une table de base de données existante. L’application d’un module de fusion peut toutefois modifier le schéma d’une table de base de données existante si le module ajoute de nouvelles colonnes à une table pour laquelle il est valide d’ajouter des colonnes. Lorsque vous utilisez une version Mergemod.dll inférieure à la version 2.0, l’application d’un module de fusion ne modifie jamais la longueur des colonnes et ne modifie jamais le schéma de la base de données cible.