Формат определения столбца
MsiViewGetColumnInfo и свойство ColumnInfo объекта View используют следующий формат для описания определений столбцов базы данных. Каждый столбец описывается строкой в соответствующем поле записи, возвращаемом функцией или свойством. Строка определения состоит из одной буквы, представляющей тип данных, за которой следует ширина столбца (в символах, если применимо, в байтах в противном случае). Нулевая ширина обозначает неограничимую ширину (например, длинные текстовые поля и потоки). Прописная буква указывает, что в столбце разрешены значения NULL.
Дескриптор столбца | Строка определения |
---|---|
s? | Строка, переменная длина (?=1–255) |
s0 | Строка, переменная длина |
i2 | Короткое целое число |
i4 | Long integer |
v0 | Двоичный поток |
Г? | Временная строка (?=0-255) |
J? | Временное целое число (?=0,1,2,4) |
O0 | Временный объект |
Строки, используемые для описания столбцов, имеют следующую связь со строками SQL-запросов, используемыми в инструкциях CREATE и ALTER. Дополнительные сведения см. в разделе Синтаксис SQL.
Возвращаемое значение | Синтаксис SQL |
---|---|
s0 | LONGCHAR |
l0 | ЛОКАЛИЗУЕМЫЙ LONGCHAR |
s # | CHAR(#) |
s # | CHARACTER(#) |
L # | CHAR(#) LOCALIZABLE |
L # | CHARACTER(#) LOCALIZABLE |
i2 | SHORT |
i2 | INT |
i2 | ЦЕЛОЕ ЧИСЛО |
i4 | LONG |
v0 | OBJECT |
Если буква не прописная, инструкция SQL должна быть добавлена с параметром NOT NULL.
Возвращаемое значение | Синтаксис SQL |
---|---|
s0 | LONGCHAR NOT NULL |
Установщик внутренне не ограничивает длину столбцов значением, указанным в формате определения столбца. Если данные, введенные в поле, превышают указанную длину столбца, пакет не пройдет проверку пакета. Для прохождения проверки в этом случае необходимо изменить данные или схему базы данных. Единственным способом изменения длины столбца стандартной таблицы является экспорт таблицы с помощью MsiDatabaseExport, редактирование экспортированного IDT-файла, а затем импорт таблицы с помощью MsiDatabaseImport. Авторы не могут изменять типы данных столбцов, допустимость значений NULL или атрибуты локализации столбцов в стандартных таблицах. Авторы могут создавать настраиваемые таблицы со столбцами, имеющими любые атрибуты столбца.
При использовании MsiDatabaseMerge для объединения эталонной базы данных с целевой базой данных имена столбцов, количество первичных ключей и типы данных столбцов должны совпадать. MsiDatabaseMerge игнорирует атрибуты локализации и длины столбца. Если длина столбца в эталонной базе данных равна 0 или больше длины этого столбца в целевой базе данных, MsiDatabaseMerge увеличивает длину столбца в целевой базе данных до длины в эталонной базе данных.
При использовании Mergmod.dll версии 2.0 применение модуля слияния к файлу .msi никогда не изменяет длину столбцов или типы столбцов существующей таблицы базы данных. Однако применение модуля слияния может изменить схему существующей таблицы базы данных, если модуль добавляет новые столбцы в таблицу, для которой допустимо добавлять столбцы. При использовании Mergemod.dll версии ниже версии 2.0 применение модуля слияния никогда не изменяет длину столбцов и схему целевой базы данных.