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 colonne 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 seule lettre représentant le type de données suivi de la largeur de la colonne (en caractères, le cas échéant, octets). Une largeur de zéro désigne une largeur illimitée (par exemple, des champs de texte longs et des flux). Une lettre majuscule indique que les valeurs NULL sont autorisées dans la colonne.

Descripteur de colonne Chaîne de définition
x? Chaîne, longueur de variable ( ? = 1-255)
consommation Chaîne, longueur de variable
i2 Entier Short
i4 Entier long
v0 Flux binaire
activée? 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 SQL syntaxe.

Valeur renvoyée Syntaxe SQL
consommation LONGCHAR
fusion LONGCHAR LOCALISABLE
x # CHAR ( # )
x # CARACTÈRE ( # )
budget # CHAR ( # ) localisable
budget # CARACTÈRE ( # ) localisable
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
consommation LONGCHAR NON 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 passer la validation dans ce cas, les données ou le schéma de base de données doivent être modifiés. La seule méthode pour 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, les valeurs null ou les attributs de localisation des colonnes dans les tables standard. Les auteurs peuvent créer des tables personnalisées avec des colonnes ayant des attributs 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 supérieure ou égale à la longueur de la colonne dans la base de données cible, MsiDatabaseMerge augmente la longueur de colonne dans la base de données cible à la longueur de la base de données de référence.

Lors de l’utilisation de 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 pour ajouter des colonnes. Lors de l’utilisation d’une version Mergemod.dll anté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.