Udostępnij za pośrednictwem


Format definicji kolumny

MsiViewGetColumnInfo i właściwości ColumnInfo obiektu View używają następującego formatu, aby opisać definicje kolumn bazy danych. Każda kolumna jest opisywana przez ciąg w odpowiednim polu rekordu zwróconym przez funkcję lub właściwość. Ciąg definicji składa się z pojedynczej litery reprezentującej typ danych, po którym następuje szerokość kolumny (w znakach, jeśli ma to zastosowanie, w przeciwnym razie bajty). Szerokość zerowa określa niezwiązaną szerokość (na przykład długie pola tekstowe i strumienie). Wielka litera wskazuje, że wartości null są dozwolone w kolumnie.

Deskryptor kolumn Ciąg definicji
s? Ciąg, długość zmiennej (?=1–255)
s0 Ciąg, zmienna długość
i2 Krótka liczba całkowita
i4 Długa liczba całkowita
Wersja 0 Strumień binarny
g? Ciąg tymczasowy (?=0–255)
j? Tymczasowa liczba całkowita (?=0,1,2,4)
O0 Obiekt tymczasowy

 

Ciągi używane do opisywania kolumn mają następującą relację z ciągami zapytania SQL używanymi przez funkcję CREATE i ALTER. Aby uzyskać więcej informacji, zobacz składni SQL.

Zwrócona wartość Składnia SQL
s0 LONGCHAR
l0 LOKALIZOWALNE LONGCHAR
s # CHAR(#)
s # CHARACTER(#)
l # CHAR(#) LOKALIZABLE
l # ZNAK(#) LOKALIZOWALNY
i2 KRÓTKI
i2 INT
i2 LICZBA CAŁKOWITA
i4 DŁUGI
Wersja 0 SPRZECIWIAĆ SIĘ

 

Jeśli litera nie jest wielkich liter, instrukcja SQL powinna zostać dołączona z wartością NOT NULL.

Zwrócona wartość Składnia SQL
s0 LONGCHAR NOT NULL

 

Instalator nie ogranicza wewnętrznie długości kolumn do wartości określonej w formacie definicji kolumny. Jeśli dane wprowadzone w polu przekraczają określoną długość kolumny, pakiet nie może przekazać weryfikacji pakietu. Aby przejść walidację w tym przypadku, należy zmienić dane lub schemat bazy danych. Jedynym sposobem zmiany długości kolumn standardowej tabeli jest wyeksportowanie tabeli przy użyciu MsiDatabaseExport, edytowanie wyeksportowanego pliku idt, a następnie zaimportowanie tabeli przy użyciu MsiDatabaseImport. Autorzy nie mogą zmieniać typów danych kolumn, wartości null ani atrybutów lokalizacji kolumn w tabelach standardowych. Autorzy mogą tworzyć tabele niestandardowe z kolumnami o dowolnych atrybutach kolumn.

W przypadku używania MsiDatabaseMerge scalania bazy danych odniesienia z docelową bazą danych, nazwy kolumn, liczba kluczy podstawowych i typy danych kolumn muszą być zgodne. MsiDatabaseMerge ignoruje atrybuty lokalizacji i długości kolumny. Jeśli kolumna w bazie danych odwołań ma długość 0 lub większą niż długość tej kolumny w docelowej bazie danych, MsiDatabaseMerge zwiększa długość kolumny w docelowej bazie danych do długości w bazie danych referencyjnej.

W przypadku korzystania z Mergmod.dll w wersji 2.0 zastosowanie modułu scalania do pliku .msi nigdy nie zmienia długości kolumn lub typów kolumn istniejącej tabeli bazy danych. Zastosowanie modułu scalania może jednak zmienić schemat istniejącej tabeli bazy danych, jeśli moduł dodaje nowe kolumny do tabeli, dla której jest prawidłowy do dodawania kolumn. W przypadku korzystania z wersji Mergemod.dll mniejszej niż wersja 2.0 aplikacja modułu scalania nigdy nie zmienia długości kolumn i nigdy nie zmienia schematu docelowej bazy danych.