Formát definice sloupce
MsiViewGetColumnInfo a vlastnost ColumnInfo objektu View pomocí následujícího formátu popisují definice sloupců databáze. Každý sloupec je popsán řetězcem v odpovídajícím poli záznamu vráceného funkcí nebo vlastností. Definiční řetězec se skládá z jednoho písmena představujícího datový typ následovaný šířkou sloupce (v případě potřeby bajty jinak). Šířka nuly označuje nevázanou šířku (například dlouhá textová pole a datové proudy). Velké písmeno označuje, že ve sloupci jsou povolené hodnoty null.
Popisovač sloupce | Definiční řetězec |
---|---|
s? | Řetězec, proměnná délka (?=1–255) |
s0 | Řetězec, proměnná délka |
i2 | Krátké celé číslo |
i4 | Dlouhé celé číslo |
v0 | Binární stream |
g? | Dočasný řetězec (?=0–255) |
j? | Dočasné celé číslo (?=0,1,2,4) |
O0 | Dočasný objekt |
Řetězce používané k popisu sloupců mají následující vztah k řetězcům dotazů SQL používaným příkazem CREATE a ALTER. Další informace najdete v tématu syntaxe SQL .
Vrácená hodnota | Syntaxe SQL |
---|---|
s0 | LONGCHAR |
L0 | LONGCHAR LOCALIZABLE |
s # | ZNAK(#) |
s # | CHARACTER(#) |
l # | CHAR(#) LOCALIZABLE |
l # | LOKALIZOVATELNÝ ZNAK(#) |
i2 | KRÁTKÝ |
i2 | INT |
i2 | CELÉ ČÍSLO |
i4 | DLOUHÝ |
v0 | OBJEKT |
Pokud písmeno není velké, měl by být příkaz SQL připojen s hodnotou NOT NULL.
Vrácená hodnota | Syntaxe SQL |
---|---|
s0 | LONGCHAR NOT NULL |
Instalační program interně neomezuje délku sloupců na hodnotu určenou formátem definice sloupce. Pokud data zadaná do pole překročí zadanou délku sloupce, balíček nepřejde ověření balíčku. Chcete-li v tomto případě předat ověření, je nutné změnit data nebo schéma databáze. Jediným způsobem, jak změnit délku sloupce standardní tabulky, je exportem tabulky pomocí MsiDatabaseExport, úpravou exportovaného souboru .idt a následným importem tabulky pomocí MsiDatabaseImport. Autoři nemohou změnit datové typy sloupců, hodnotu null nebo lokalizační atributy žádných sloupců ve standardních tabulkách. Autoři mohou vytvářet vlastní tabulky se sloupci, které mají atributy sloupců.
Při použití MsiDatabaseMerge ke sloučení referenční databáze do cílové databáze se musí shodovat názvy sloupců, počet primárních klíčů a datové typy sloupců. MsiDatabaseMerge ignoruje atributy lokalizace a délky sloupců. Pokud má sloupec v referenční databázi délku 0 nebo větší než délka daného sloupce v cílové databázi, MsiDatabaseMerge zvýší délku sloupce v cílové databázi na délku referenční databáze.
Při použití Mergmod.dll verze 2.0 aplikace slučovacího modulu do souboru .msi nikdy nezmění délku sloupců nebo typů sloupců existující databázové tabulky. Aplikace modulu sloučení však může změnit schéma existující databázové tabulky, pokud modul přidá nové sloupce do tabulky, pro kterou je platné přidat sloupce. Při použití Mergemod.dll verze menší než verze 2.0 aplikace modulu sloučení nikdy nezmění délku sloupců a nikdy nezmění schéma cílové databáze.