Ошибки базы данных или "engine errors" происходят, когда в run time возникает ошибка в коде события на уровне записи. Например, ошибка базы данных происходит, когда пользователь пытается сохранить null-значение в поле, которое не принимает null-значений.

Обычно, когда происходит ошибка базы данных, лежащий в основе баз данных движок, который определил ошибку, генерирует сообщение об ошибке. Однако, точная природа сообщения об ошибке зависит от обращения к базе данных. Например, сообщения об ошибках, генерируемые удаленным сервером баз данных могут отличаться от тех, которые генерируются локальной таблицей базы данных Visual FoxPro. В дополнение, ошибки на уровне движка могут быть общими, так как движок баз данных не имеет информации о контексте для обновления записи. В результате, сообщение генерируемое движком базы данных является бесполезным для пользователея пориложения Visual FoxPro.

Для обработки ошибок баз данных более приближенном к приложении способом, вы можете создать триггеры. Триггер представляет собой выражение, которое привязано к таблице и вызывается когда изменяется любая запись таблицы с помощью одной из команд управления данными. Вы можете написать код в форме пользовательской функции или хранимой процедуры, используя команжу CREATE TRIGGER для отслеживания условий ошибок, характерных для приложения и генерации подходящих сообщений.

NoteСовет

Если вы обрабатываете ошибки баз данных с помощью триггеров, то может поступить два сообщения об ошибке: одно из вашего триггера и другое из движка, лежащего в основе баз данных. Вы можете избежать такой возможности включив буфферирование. Буфферирование предоставляет вам возможность задержать обновление записи в лежащей в основе базы данных, но оставляет возможность вызвать ваш триггер при обновлении записи. Вы можете включить буфферирование и отобразить отобразить настроенные сообщения об ошибках с помощью функции CURSORSETPROP(). Для получения более подрбной информации смотрите описание функции CURSORSETPROP().

Для получения более подрбной информации смотрите Команда CREATE TRIGGER и Как: создавать и управлять хранимыми процедурами.

Смотрите также