- •Консультации к госэкзаменам
- •4. Команды установки параметров
- •11. Модификация таблицы
- •11, 13. Добавление и удаление записей командами sql. Модификация таблицы
- •19. Поиск данных в неиндексированной таблице
- •20. Фильтрация данных в неиндексированной таблице
- •23. Сортировка данных в таблице
- •24. Создание базы данных
- •26. Создание и использование переменных
- •28. Функции работы с датой и временем
- •29. Функции для работы с таблицей
- •30. Функции для преобразования типов данных
- •31. Создание программных файлов
- •32. Создание и работа с меню
- •36. Понятие события и метода
- •39. Целостность, достоверность и непротиворечивость данных
- •40. Контроль достоверности данных на уровне таблицы
- •42. Отчёт. Создание отчета средствами мастера
- •44. Формирование запросов средствами команд языка sql
- •Практические задания
- •8. Создание кнопок.
- •12. Программа для вычисления
- •13. Работа с функциями времени
40. Контроль достоверности данных на уровне таблицы
Триггеры
Триггеры представляют собой методы, с помощью которых обеспечивается целостность базы данных при внесении изменений. Триггеры не принимают параметров и не возвращают значений. Они выполняются неявно. То есть триггер запускается только при попытке изменения данных.
Триггер – это код, выполняющий проверку данных при их добавлении, удалении или редактировании. Он представляет собой логическое выражение, возвращающее значение .T. или .F. Триггер автоматически выполняется при каждой попытке изменить защищаемые данные. Если, после проверки поставленного условия триггер возвращает значение .T., то всё в порядке – действие выполняется! Т.о. триггеры обеспечивают целостность данных, предотвращая их несанкционированное или неправильное изменение.
Триггер является частью транзакции, следовательно, если триггер терпит неудачу, отменяется вся транзакция. И наоборот, если какая-то часть транзакции не удалась, то и триггер будет отменен.
На уровне таблицы контроль может производиться:
на уровне свойств поля таблицы (вкладка Fields окна конструктора таблиц – Table Designer); используется, если необходима проверка при добавлении или удалении записи;
на уровне свойств таблицы в целом (вкладка Table окна конструктора таблиц); осуществляется, если необходима проверка нескольких записей таблицы.
При определении условий достоверности ввода данных используются триггеры и хранимые процедуры.
Контроль достоверности ввода данных на уровне записи. Рассмотрим пример контроля ввода данных на уровне свойств поля таблицы. На вкладке Fields используем область Field validation (Проверка правильности ввода в поле) окна конструктора таблиц. (Рис.38)
В поле Rule (Условие, правило) задается логическое выражение, а в поле Message (Сообщение) – сообщение, отображаемое на экране, если логическое выражение возвращает значение False.
Рассмотрим пример. Откройте таблицу Products базы данных TestData. Допустим в эту таблицу, в графу unit_cost, нельзя вводить стоимость товара свыше $100.
Введём в поле Rule логическое выражение
IIF(products.unit_cost>$100,.F.,.T.) && здесь IIF() – функция VFP, альтернативная форма IF…ENDIF структуры; определяет одно из двух значений, основанных на логическом выражении;
&& обратите внимание на то, что название таблицы предшествует названию поля; они разделены точкой;
&& символ доллара появился в выражении в связи с тем, что в данном столбце таблицы использован тип данных Currency (валюта).
В поле Message введём сообщение:
“Не свыше $100”
Заканчивая создание правила, нажмите кнопку ОК в окне конструктора таблиц. В открывшемся окне запроса снимите отметку в поле «Compare the rules against existing data» и щёлкните по кнопке Yes. Окно конструктора закроется.
Если теперь, открыть таблицу Products и попытаться ввести в поле unit_cost стоимость более $100, будет появляться сообщение, предупреждающее об ошибке. Введённые данные не сохраняются.