Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Обеспечение каскадных воздействий с помощью триггеров



Если между двумя или более таблицами БД установлены отношения ссылочной целостности («один ко многим», «один к одному»), при изменении столбца связи в родительской таблице должно быть изменено значение столбца связи у записей соответствующих дочерних таблиц. Такое воздействие носит название каскадного обновления.

Триггер, реализующий каскадное обновление в дочерней таблице, будет в числе прочих содержать оператор:

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; Прочитано: 539 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...