Вы можете создавать триггеры, используя Конструктор таблицы (Table Designer) или команду CREATE TRIGGER. Для каждой таблицы вы можете создать по одному триггеру для каждого из трех событий: INSERT, UPDATE и DELETE. Таблица может иметь максимум три триггера одновременно.

Для создания триггера

  • На закладке Table (Таблица) Table Designer (Конструктора таблиц) (Visual FoxPro), введите выражение тригера или имя хранимой процедуры, содержащей выражение тригера, в боксах Insert trigger (Триггер вставки), Update trigger (Триггер обновления) или Delete trigger (Триггер удаления).

    - или-

  • Используйте команду CREATE TRIGGER.

Например, представим ситуацию, когда при каждой продаже какого-то товара компанией Tasmanian Traders ее продавцы желают сравнить остаток на складе Units_in_stock с уровнем Reorder_level, который определяет необходимость поставки дополнительных количеств проданного товара, и желают чтобы их оповестили о необходимости дозаказа проданного товара. Вы можете создать триггер обновления на таблице products для сопровождения этой задачи. При каждой продаже продукта, триггер Update будет срабатывать и поле Units_in_stock будет обновляться, отражая количество оставшегося в складе продукта.

Для создания триггера, вы можете указать updProductsTrigger( ) в качестве вашего триггера Update для таблицы products. Вы можете добавить поле в products, с именем reorder_amount, которое будет хранить количество, каоторое вы будете перезаказывать каждый раз, и создать таблицу reorder с полями : product_id и reorder_amount. Вы можете затем добавить такой код в вашу хранимую процедуру:

 CopyCode imageСкопировать код
PROCEDURE updProductsTrigger
   IF (units_in_stock+units_on_order) <= reorder_level
   INSERT INTO Reorder VALUES(Products.product_id, ;
    Products.reorder_amount)
   ENDIF   
ENDPROC

Вы можете создать аналогичные триггеры для событий вставки или удаления записей используя опции FOR INSERT или FOR DELETE, соответственно, вместо опции FOR UPDATE. Если вы попытаетесь создать триггер, который уже существует для конкретного события и таблицы, пока команда SET SAFETY установлена в "on", Visual FoxPro запросит вас о потверждении переписи существующего триггера.

NoteЗамечание

Когда вызывается триггер, Alias всегда представляет обновляемый курсор, независимо от того, какой Alias выбран в программном коде, который вызвал срабатывание триггера.

Visual FoxPro включает в себя Referential Integrity Builder (Компоновщик ссылочной целостности) для генерации триггеров и хранимых процедур, который навязывает свои правила ссылочной целостности - "Referential Integrity (RI)" - для вашей базы данных. Для получения более подробной информации об использовании компоновщика RI Builder смотрите Referential Integrity Builder (Компоновщик ссылочной целостности) и Как: выстроить ссылочную целостность между таблицами.

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