Триггеры
В Visual FoxPro для таблиц, входящих в состав базы данных, вы можете определить триггеры, приведенные в табл. 14.1.
Таблица 14.1. Тригеры.
Триггер | Описание |
---|---|
Insert (Вставить) | Определяет действия, которые будут выполняться после добавления новой записи в таблицу |
Update (Обновить) | Определяет действия, которые будут выполняться после изменения записи таблицы |
Delete (Удалить) | Определяет действия, которые будут выполняться после удаления записи из таблицы |
Для определения триггеров введите в поля ввода Insert trigger (Вставить триггер), Update trigger (Обновить триггер) или Delete trigger (Удалить триггер) вкладки Table (Таблица) окна конструктора выбранной таблицы операторы сравнения, вызов хранимой процедуры или любое логическое выражение. Если результат вычисления выражения равен True, то считается, что введены допустимые значения. В противном случае сохранения введенных данных не происходит и формируется сообщение об ошибке. При использовании хранимых процедур вы сможете не только проверить условие достоверности ввода данных, но и задать действия, выполняемые при добавлении, удалении и изменении данных.
Вызов триггера Delete (Удалить) осуществляется:
- при выполнении команды delete;
- когда вы помечаете запись на удаление в режиме Browse (Обзор) или Edit (Правка).
Вызов триггера insert (Вставить) осуществляется в следующих случаях:
- при выполнении команд append from, append from array/append blank;
- при добавлении в таблицу новой записи в режиме Browse (Обзор) или Edit (Правка);
- при выполнении команд import, insert – sql, recall;
- при снятии метки об удалении записи в режиме Browse (Обзор) или Edit (Правка).
Триггер update (Обновить) вызывается, когда:
- наступает любое событие, которое приводит к модификации записи (например, при изменении значения поля);
- выполняются команды gather, replace, replace from array, UPDATE – SQL.
При использовании триггеров необходимо учитывать следующие ограничения, имеющиеся в Visual FoxPro:
- при модификации записей, помеченных для удаления, и выполнении команды pack триггеры не вызываются;
- выполнение команды zap не вызывает триггер Delete (Удалить);
- при использовании буферизации ввода триггер update (Обновить) вызывается только при вызове функции tableupdate ().
Для удаления триггера в окне конструктора перейдите на вкладку Table (Таблица) и очистите поле ввода выражения для триггера или используйте команду DELETE TRIGGER.