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

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

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

Конец

Нет

Да

Да


 

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

67013. Функционально-смысловые типы монологической речи. Повествование 43.5 KB
  Повествование раскрывает тесно связанные между собой события явления действия. Чаще всего это действия происходившие в прошлом. Предложения в повествовательных текстах не описывают действия а повествуют о них. Повествование это сообщение о каких-либо событиях и действиях.
67014. Функционально-смысловые типы монологической речи. Рассуждение 78 KB
  Рассуждение это тип речи целью которого является выяснение какого-либо понятия доказательство или опровержение какой-нибудь мысли. С логической точки зрения рассуждение это цепь умозаключений на какую-либо тему изложенная в последовательной форме. Рассуждение как тип речи широко встречается в научном стиле.
67015. Функциональные стили русского языка (общая характеристика) 90.5 KB
  Современный русский язык состоит из 5 стилей: Разговорный стиль Научный стиль Официально-деловой стиль Публицистический стиль Художественный стиль Функционально-стилевая типология охватывает практически все тексты рассматривая их во всем многообразии содержательных и языковых стилевых признаков. Любой текст можно отнести к тому или иному стилю...
67016. Функциональные стили русского языка: общее понятие о публицистическом стиле 64 KB
  Аудирование Задание 1. Вопросы к тексту: Какие функции сочетает в себе публицистический стиль Какие вопросы освещает публицистический стиль С какой целью используется публицистический стиль Задание 2. Задание 3. фразеологизированные выражения публицистического стиля имеюшие отрицательно-оценочную окрашенность...
67017. Функциональные стили русского языка. Основные функции публицистики в обществе. Правописание имен числительных 74 KB
  Добиться осознания студентами тесной взаимосвязи языка и общества, основных функций языка в обществе, которые будут способствовать правильному стилистическому использованию изученных конструкций в речи.
67018. Мир глазами физика 146 KB
  Цель: формирование интереса к изучению физики‚ расширение кругозора учащихся с помощью демонстрации занимательных опытов‚ загадок‚ игр‚ знакомства с космонавтом‚ бароном Мюнхгаузеном‚ магом-чародеем.
67019. Ігри з учнями початкової школи для розвитку комунікативних здібностей 31.5 KB
  Дихальні вправи: контроль і самоконтроль за частотою дихання привчають дітей після навантаження завжди застосовувати дихальні вправи в тому числі і самостійно. Відповідальний за штрафні очки фіксує кількість штрафних очок які призначає суддя за неправильне виконання вправи або передачу м'яча.
67020. Підготовчі вправи: розмикання приставними кроками в колоні, у шерензі, у колі. Загальнорозвивальні вправи: комплекс ранкової гімнастики 50.5 KB
  На відміну від попередніх у цій програмі навчальний матеріал розподілений за школами до яких увійшли вправи об’єднані за способами рухової діяльності а не за видами спорту. Школу культури рухів становлять вправи основної гімнастики стройові вправи і команди елементи акробатики вправи коригувальної спрямованості та ті що пов’язані із незвичним положенням тіла у просторі.
67021. Загальнорозвивальні вправи з м’ячем. Вправи для розвитку сили. Стрибки в глибину з висоти до 40 см із м`яким приземленням. Зіскок з гімнастичної лави вигнувшись 75 KB
  Школа стрибків об`єднує види стрибків: зі скакалкою, стрибки у глибину, висоту, довжину, опорні. Навчати молодших школярів рухових дій доцільно із застосуванням ігрового методу. Це сприятиме створенню позитивного емоційного клімату і формуванню стійкого інтересу до занять фізичною культурою.