11547

Триггеры. Сравнение триггеров и хранимых процедур

Лабораторная работа

Информатика, кибернетика и программирование

Триггеры 1. Сравнение триггеров и хранимых процедур Хранимые процедуры Триггеры Являются самостоятельным объектом базы данных Привязываются к таблице или виду Явно вызываются на

Русский

2013-04-08

57 KB

5 чел.

Триггеры

1. Сравнение триггеров и хранимых процедур

Хранимые процедуры

Триггеры

Являются самостоятельным объектом базы данных

Привязываются к таблице или виду

Явно вызываются на выполнение командой EXECUTE

Реагируют на события, связанные с таблицей-владельцем или видом-владельцем

Могут иметь входные и/или выходные параметры, коды возврата

Не имеют входных/выходных параметров и кодов возврата

Могут выполняться в отдельной транзакции

Выполняются в той же транзакции, в которой осуществляются изменения таблицы-владельца или вида-владельца.

2. Виды триггеров

Объект

Действие

Триггер

Таблица/вид

Вставка строк INSERT

Вместо вставки строк INSTEAD OF

После вставки строк FOR или AFTER

Модификация строк UPDATE

Вместо модификации строк INSTEAD OF

После модификации строк FOR или AFTER

Удаление строк DELETE

Вместо удаления строк INSTEAD OF

После удаления строк FOR или AFTER

3. Общий синтаксис создания триггера

CREATE TRIGGER <Имя_триггера>

ON <Имя_таблицы_или_вида>

{FOR|AFTER|INSTEAD OF} {[INSERT] [,] [UPDATE] [,] [DELETE]}

AS <SQL-выражения, составляющие тело триггера>


4. Алгоритм обработки триггеров

5. Содержимое таблиц INSERTED и DELETED в зависимости от вида триггера

Вид триггера

Таблицы INSERTED и DELETED

INSTEAD OF INSERT

INSERTED содержит вставляемые в таблицу записи. DELETED пуста.

FOR INSERT

INSERTED содержит вставленные в таблицу записи. DELETED пуста.

INSTEAD OF UPDATE

INSERTED содержит новые значения модифицируемых записей. DELETED содержит старые значения модифицируемых записей.

FOR UPDATE

INSERTED содержит новые значения модифицированных записей. DELETED содержит старые значения модифицированных записей.

INSTEAD OF DELETE

INSERTED пуста. DELETED содержит удаляемые записи.

FOR DELETE

INSERTED пуста. DELETED содержит удаленные записи.

Таблицы INSERTED и DELETEDвиртуальные, существуют только в период выполнения триггера.

6. Примеры

--6.1. Триггер на поддержание актуального количества товаров при добавлении поставок

CREATE TRIGGER tr_supply_fi

ON supply

FOR INSERT

AS

 UPDATE detail

 SET detail_quantity = d.detail_quantity + i.supply_quantity

 FROM detail d JOIN INSERTED i ON d.detail_id = i.detail_id

--6.2. Триггер на поддержание актуального количества товаров при удалении поставок

CREATE TRIGGER tr_supply_fd

ON supply

AFTER DELETE

AS

 UPDATE detail

 SET detail_quantity = detail.detail_quantity - DELETED.supply_quantity

 FROM detail JOIN DELETED ON detail.detail_id = DELETED.detail_id

--6.3. Триггер на поддержание актуального количества товаров при отпуске деталей в цеха

CREATE TRIGGER tr_delivery_string_fi

ON delivery_string

FOR INSERT

AS

 UPDATE detail

 SET detail_quantity = d.detail_quantity - i.delivery_quantity

 FROM detail d JOIN INSERTED i ON d.detail_id = i.detail_id

--6.3. Проверка допустимости значения даты поставки при добавлении новой поставки

CREATE TRIGGER tr_supply_ii

ON supply

INSTEAD OF INSERT

AS

 IF EXISTS (SELECT *

            FROM INSERTED

      WHERE supply_date > GETDATE())

 BEGIN

   RAISERROR ('Недопустимое значение даты поставки!', 16, 1)

   ROLLBACK TRAN

 END

 ELSE

   INSERT INTO supply (supplier_id, detail_id, supply_date, supply_quantity)

     SELECT supplier_id, detail_id, supply_date, supply_quantity

     FROM INSERTED

 

--6.4. Проверка допустимости значения даты поставки при редактировании существующей поставки

CREATE TRIGGER tr_supply_iu

ON supply

INSTEAD OF UPDATE

AS

IF UPDATE (supply_date)

 IF EXISTS (SELECT *

            FROM INSERTED

      WHERE supply_date > GETDATE())

 BEGIN

   RAISERROR (' Недопустимое значение даты поставки!', 16, 1)

   ROLLBACK TRAN

 END

 ELSE

   UPDATE supply

   SET supplier_id = i.supplier_id,

       detail_id = i.detail_id,

       supply_date = i.supply_date,

       supply_quantity = i.supply_quantity

   FROM supply s JOIN INSERTED i on s.supply_id = i.supply_id


Выполнение тела триггера

ыполнение операции модификации таблицы в оперативной памяти сервера

Триггер INSTEAD OF существует?

На сервер поступает команда модификации таблицы, например INSERT

Проверка ограничений целостности таблицы

Триггер FOR|AFTER существует?

Заполнение таблиц INSERTED и DELETED

Заполнение таблиц INSERTED и DELETED

Выполнение тела триггера

Физическая фиксация изменений в таблице (фиксация транзакции)

Конец

Нет

Да

Да


 

А также другие работы, которые могут Вас заинтересовать

37274. Применение языка PHP, СУБД MySQL и фреймворка CodeIgniter для разработки динамических веб-сайтов 959 KB
  Курсовая работа посвящена возможностям применения языка PHP, системы управления базами данных (СУБД) MySQL, фреймворка CodeIgniter для разработки динамических веб-сайтов. Апробация данных технологий проводится на примере создания фронт-части (front-end) веб-сайта для сети мебельных магазинов «Комфорт+»
37275. Розрахунок і конструювання монолітного ребристого залізобетонного перекриття з балочними плитами 2.33 MB
  0184 Визначення кількості стержнів армування Розрахунок і конструювання другорядної балки Розрахункова схема балки Статичний розрахунок балки Уточнення розмірів перерізу балки Розрахунок міцності балки в нормальних перерізах Розрахунок міцності балки в похилих перерізах Розрахунок на дію поперечної сили Розрахунок на дію згинального моменту Побудова обгинаючої епюри моментів Побудова епюри матеріалів Конструювання перерізу 11 Конструювання перерізу 22 Конструювання перерізу 33 Розрахункові перерізи для епюри...
37276. Исследование методов и алгоритмов работы трансляторов предметно-ориентированных языков 889.5 KB
  Для описания семантических функций синтаксической диаграммы расстановки ссылок использованы следующие обозначения: Tb_Lexems[.Code массив кодов лексем; Tb_Lexems[.Vlue массив значений лексем; Number_Lexem номер очередной рассматриваемой лексемы в массиве лексем; Stek_do стек для циклов WHILE; Stek_if стек для развилок IF; Stek_cse – стек для операторовпереключателей SWITCH; Stek_to – стек для циклов FOR. Рисунок 3 Рсхема расстановки ссылок Семантические функции к Рсхеме расстановки ссылок на рисунке 3: y0:...
37277. Багатоповерхова каркасна будівля 525.5 KB
  Розрахунок та конструювання другорядної балки. Розрахункова схема балки. Статичний розрахунок балки. Конструктивний розрахунок допоміжної балки.
37278. Теория государства и права, учебник 4.32 MB
  Садовничий ректор Московского университета академик РАН профессор Введение Вопросам теории государства и права в отечественной и зарубежной юридической литературе традиционно уделяется большое внимание. Определение и основное разделение права М. Лекции по общей теории права СПб.
37279. ПРИМЕНЕНИЕ ТЕХНОЛОГИЙ JAVA И JAVAFX ДЛЯ РАЗРАБОТКИ ВИРТУАЛЬНЫХ ЛАБОРАТОРИЙ МАТЕМАТИЧЕСКОГО МОДЕЛИРОВАНИЯ 912.5 KB
  Методы моделирования в настоящее время внедрились практически во все сферы человеческой деятельности: технические, социально-экономические, сложные экономические, общественные, сферы международных отношений и др. Это связано с необходимостью расширения и углубления знаний реального мира. Существует множество реальных объектов и процессов, информацию о которых мы не можем получить из-за малости или масштабности размеров (объекты микро- и макрокосмоса); высоких или криогенных температур.
37281. Бухгалтерский и налоговый отчет в компании ООО «Экопласт» 423 KB
  Эти взаимоотношения основаны на различных денежных расчетах в процессе заготовления производства и реализации продукции товаров работ или услуг. Учет поступления товаров Дадим определение товаров на основании нормативных документов применяемых в Российской Федерации. Все операции куплипродажи товаров осуществляются на основании договора куплипродажи и его разновидностей договор поставки договор розничной куплипродажи и т. Основными целями бухгалтерского учета товарных операций является: своевременное и полное отражение на счетах...
37282. История отечественного государства и права. Часть 1 1.98 MB
  ЛОМОНОСОВА История отечественного государства и права. ВВЕДЕНИЕ История отечественного государства и права есть закономерная смена типов и форм государства а также правовых систем на территории нашей Родины. Как историческая наука история государства и права часть истории человечества тесно связанная с историей народного хозяйства культуры и других отраслей человеческой деятельности но в то же время сохраняющая относительную самостоятельность и обладающая четко выраженным объектом исследования. Однако прежде всего история государства и...