Распечатать страницу

Триггеры и правило проверки записи в Visual FoxPro

« Назад

Триггер – это код, выполняющий проверку данных при их добавлении, удалении или редактировании. Реально триггер оформляется в виде выражения, возвращающего .T. или .F.; выражение вводится на вкладке Table проектировщика таблицы базы данных (рис. 2.12).

9.1.-Фрагмент-вкладки-Table-проектировщика-таблицы-Authors

Рис. 2.12. Фрагмент вкладки Table проектировщика таблицы Authors

Если триггер отказывает, то есть вычисляется со значением .F., то соответствующая операция (добавление, обновление или удаление) выполнена не будет и система сгенерирует ошибку.

Триггеры автоматически формируются VFP при задании правил добавления, обновления и удаления записей либо программируются пользователем. При этом итоговое выражение триггера может объединять код созданный системой и добавленный пользователем. Например, триггер обновления можно записать в следующем виде:

__ri_update_authors( ) and AuthorId >= 0

где первый операнд выражения добавлен системой автоматически после генерации процедуры __RI_UPDATE_authors( ), обеспечивающей правило обновления Cascade при работе с таблицами Authors и BooksAuthors, а второй операнд дописан пользователем.

В нашем случае, однако, второе условие в триггере избыточно, поскольку его содержит правило проверки записи, определенное в поле Rule вкладки Table (см. рис. 2.12). При попытке ввести запись, не отвечающую правилу проверки, возникнет ошибка, сопровождаемая сообщением (рис. 2.13), заданным в поле Message той же вкладки.

9.2.-Нарушено-правило-проверки-AuthorId= 0-записи

Рис. 2.13. Нарушено правило проверки AuthorId >= 0 записи

После нажатия на кнопку Revert восстановятся прежние значения редактируемой записи.

Для свободных, не входящих в базу данных таблиц триггер и правило проверки записи задать нельзя.