Поделиться через


Формат определения столбца

MsiViewGetColumnInfo исвойство columnInfoобъекта view View использует следующий формат для описания определений столбцов базы данных. Каждый столбец описывается строкой в соответствующем поле записи, возвращаемой функцией или свойством. Строка определения состоит из одной буквы, представляющей тип данных, за которым следует ширина столбца (в символах, если применимо, байты в противном случае). Ширина нуля обозначает несвязанную ширину (например, длинные текстовые поля и потоки). Прописная буква указывает, что значения NULL разрешены в столбце.

Дескриптор столбца Строка определения
s? Строка, переменная длина (?=1-255)
s0 Строка, длина переменной
i2 Короткое целое число
i4 Длинное целое число
v0 Двоичный поток
g? Временная строка (?=0-255)
j? Временное целое число (?=0,1,2,4)
O0 Временный объект

 

Строки, используемые для описания столбцов, имеют следующую связь со строками запросов SQL, используемыми CREATE и ALTER. Дополнительные сведения см. в синтаксисе SQL.

Возвращаемое значение Синтаксис SQL
s0 LONGCHAR
l0 LONGCHAR LOCALIZABLE
s # CHAR(#)
s # CHARACTER(#)
l # CHAR(#) LOCALIZABLE
l # CHARACTER(#) LOCALIZABLE
i2 КОРОТКИЙ
i2 INT
i2 ЦЕЛОЕ ЧИСЛО
i4 ДЛИННЫЙ
v0 ОБЪЕКТ

 

Если буква не прописна, инструкция SQL должна быть добавлена с помощью NOT NULL.

Возвращаемое значение Синтаксис SQL
s0 LONGCHAR НЕ NULL

 

Установщик не ограничивает длину столбцов значением, указанным в формате определения столбцов. Если данные, введенные в поле, превышают указанную длину столбца, пакет не сможет пройти проверку пакета. Чтобы пройти проверку в этом случае, необходимо изменить данные или схему базы данных. Единственным средством изменения длины столбца стандартной таблицы является экспорт таблицы с помощью MsiDatabaseExport, редактирования экспортированного idt-файла, а затем импорта таблицы с помощью MsiDatabaseImport. Авторы не могут изменять типы данных столбцов, значение NULL или атрибуты локализации любых столбцов в стандартных таблицах. Авторы могут создавать пользовательские таблицы с столбцами с любыми атрибутами столбцов.

При использовании MsiDatabaseMerge для объединения эталонной базы данных в целевую базу данных имена столбцов, количество первичных ключей и типы данных столбцов должны соответствовать. MsiDatabaseMerge игнорирует атрибуты локализации и длины столбцов. Если столбец в эталонной базе данных имеет длину 0 или больше длины этого столбца в целевой базе данных, MsiDatabaseMerge увеличивает длину столбца в целевой базе данных до длины в эталонной базе данных.

При использовании Mergmod.dll версии 2.0 приложение модуля слияния к файлу .msi никогда не изменяет длину столбцов или типов столбцов существующей таблицы базы данных. Однако применение модуля слияния может изменить схему существующей таблицы базы данных, если модуль добавляет новые столбцы в таблицу, для которой допустимо добавить столбцы. При использовании Mergemod.dll версии меньше версии 2.0 приложение модуля слияния никогда не изменяет длину столбцов и никогда не изменяет схему целевой базы данных.