Внутренняя проверка
При создании пакета установки можно использовать функцию MsiViewModify или метод View.Modify, чтобы обеспечить синтаксическую правильность данных. Дополнительные сведения см. в разделе Метод Modify. На самом низком уровне столбец таблицы базы данных может хранить целые числа (короткие или длинные), строки или двоичные данные. Однако пакет установки требует определенных целых чисел или строк в определенных таблицах. Эти спецификации хранятся в таблице _Validation. Например, столбец FileName таблицы File является строковым столбцом, но в нем хранится имя файла. Поэтому запись должна быть не только строкой, но и соответствовать требованиям к именованию файлов.
Различные значения перечисления проверки, используемые с функцией MsiViewModify , позволяют выполнять немедленную проверку на разных уровнях. Перечисление MSIMODIFY_VALIDATE_FIELD можно использовать для проверки отдельных полей записи. Он не проверяет внешние ключи. Перечисление MSIMODIFY_VALIDATE проверяет всю строку и включает проверку внешнего ключа. Если вы вставляете новую строку в таблицу, используйте перечисление MSIMODIFY_VALIDATE_NEW, чтобы убедиться, что вы добавляете допустимые данные, а также использовать уникальные первичные ключи. Вставка завершается ошибкой, если первичные ключи не являются уникальными. Если вызов MsiViewModify с одним из перечислений проверки возвращает ошибку, вы можете выполнить повторные вызовы MsiViewGetError для диагностики проблемы. MsiViewGetError указывает столбец, в котором произошла ошибка, а также значение перечисления для устранения проблемы. Дополнительные сведения см. в разделе Метод GetError.
Вы также можете использовать внутреннюю проверку, чтобы убедиться, что другие авторы правильно вводит данные в настраиваемую таблицу. Добавьте каждый из столбцов настраиваемой таблицы в таблицу _Validation, используя имя настраиваемой таблицы и имя столбца в качестве первичного ключа. Укажите описание или назначение каждого столбца в столбце Описание таблицы _Validation. Введите применимые требования для каждого столбца, используя столбцы Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Category и Set:
- Если столбец допускает значение NULL, введите Y. В противном случае введите "N".
- Если столбец является целочисленным и может содержать диапазон целых чисел, введите этот диапазон с помощью столбцов MinValue и MaxValue.
- Внешние ключевые столбцы идентифицируются с помощью столбцов KeyTable и KeyColumn.
- Для строковых столбцов укажите категорию, например Имя файла, GUID или Идентификатор. Дополнительные сведения см. в разделе Типы данных столбцов.
- Если данные могут относиться только к определенному количеству значений (строковое или целое число), используйте столбец Set, чтобы получить список допустимых значений.
Ниже приведен список столбцов (в дополнение к таблицам, столбцам и описаниям) в таблице _Validation, которые можно заполнить, если столбец имеет указанный тип. (Обратите внимание, что не нужно заполнять все столбцы.)
Тип | Столбцы |
---|---|
Целое число | Допускающее значение NULL, MinValue, MaxValue, KeyTable, KeyColumn, Set |
Строка | Допускающее значение NULL, KeyTable, KeyColumn, Category, Set, MinValue, MaxValue |
Двоичные данные | Допускает значение NULL, Категория (категория должна быть "Двоичная") |
Среды разработки могут использовать MSIMODIFY_VALIDATE_DELETE. В этом перечислении предполагается, что вы хотите удалить строку. Проверка полей или внешнего ключа не выполняется. Это перечисление фактически выполняет обратную проверку внешнего ключа. Он проверяет _Validation таблицу на наличие ссылок в столбцах KeyTable и KeyColumn для таблицы, к которой принадлежит "удаленная" строка. Если есть столбцы, содержащие таблицу, содержащую "удаленную" строку в качестве потенциального внешнего ключа, он циклически проходит по столбцу, чтобы узнать, ссылается ли какое-либо из значений на значения в строке "удалено". Возврат ошибки означает, что вы нарушаете реляционную целостность базы данных путем удаления строки.