Триггеры и правило проверки записи в Visual FoxPro
« Назад Триггер – это код, выполняющий проверку данных при их добавлении, удалении или редактировании. Реально триггер оформляется в виде выражения, возвращающего .T. или .F.; выражение вводится на вкладке Table проектировщика таблицы базы данных (рис. 2.12). Рис. 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 той же вкладки. Рис. 2.13. Нарушено правило проверки AuthorId >= 0 записи После нажатия на кнопку Revert восстановятся прежние значения редактируемой записи. Для свободных, не входящих в базу данных таблиц триггер и правило проверки записи задать нельзя. |