![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Если между двумя или более таблицами БД установлены отношения ссылочной целостности («один ко многим», «один к одному»), при изменении столбца связи в родительской таблице должно быть изменено значение столбца связи у записей соответствующих дочерних таблиц. Такое воздействие носит название каскадного обновления.
Триггер, реализующий каскадное обновление в дочерней таблице, будет в числе прочих содержать оператор:
IF (OLD.ПолеСвязиРодителя <> NEW. ПолеСвязиРодителя) THEN
UPDATE Дочерняя.Таблица
SET ПолеСвязиДочернейТаблицы = NEW.ПолесвязиРодителя
WHERE ПолеСвязиДочернейТаблицы = OLD.ПолеСвязиРодителя;
Если в родительской таблице удалена запись, должны быть удалены все связанные с ней записи в дочерней таблице. Такое воздействие на дочернюю таблицу носит название каскадного удаления.
Триггер, реализующий каскадное удаление в дочерней таблицы, будет содержать оператор:
DELETE FROM ДочерняяТаблица
WHERE ПолеСвязиДочернейТаблицы = ПолеСвязиРодителя;
Примеры.
CREATE TRIGGER BU_TOVARY FOR TOVARY
ACTIVE
BEFORE UPDATE
AS
BEGIN
IF (OLD.TOVAR <> NEW.TOVAR) THEN
UPDATE RASHOD
SET TOVAR = NEW.TOVAR
WHERE TOVAR = OLD.TOVAR;
END
---------------------------------------
CREATE TRIGGER AD_TOVARY FOR TOVARY
ACTIVE
AFTER DELETE
AS
BEGIN
DELETE FROM RASHOD
WHERE RASHOD.TOVAR = TOVARY.TOVAR;
END
Дата публикования: 2014-12-28; Прочитано: 562 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!