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.