Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пак Новакова + / LabSQL3(6-11)ЯрославцеваСоловьёв.doc
Скачиваний:
50
Добавлен:
03.06.2014
Размер:
1.52 Mб
Скачать

Упражнение 3 – Проверка работы триггера

  1. Проверим работу триггера. Выполним следующую команду:

USE AdventureWorks

GO

DELETE FROM HumanResources.JobCandidate

WHERE JobCandidateID =

(SELECT MIN(JobCandidateID)FROM HumanResources.JobCandidate )

Рис. 3. Проверка

  1. В результате срабатывания триггера на удаление данные о кандидате должны быть скопированы в таблицу. Выолним запрос:

SELECT *

FROM HumanResources.JobCandidateHistory

Рис. 4. Результат

  1. Удалим данные из таблицы, выполнив команду:

TRUNCATE TABLE [HumanResources].[JobCandidateHistory]

Рис. 5. Удаление данных из таблицы

Упражнение 4 – Создание триггера на обновление и вставку

  1. Создадим триггер OrderDetailNotDiscontinuedна таблицуSales.SalesOrderDetail. Этот триггер должен отвергать попытки ввода заказов на товары, прием которых на склад прекращен. Информация о прекращении поставок находится в таблицеProduction.Product. Если поставки товара прекращены, то значение поляDiscontinuedDateбудет иметь значение отличное отNULL. При попытке заказать таой товар триггер должен выдать сообщение с помощью командыRAISERRORи откатить транзакцию.

Рис. 6. Результат

  1. Выполним проверку триггера. В базу данных необходимо ввести хотя бы одну строку, при обнаружении которой во время выполнения кода триггера должна активироваться ошибка.

Изначально на запрос данных нет, поэтому выполняем два запроса по порядку:

Рис.7. Изменения

  1. Далее выполняем запрос

USE AdventureWorks

GO

SELECT ProductID, Name

FROM Production.Product

WHERE DiscontinuedDate is NOT NULL

Рис. 8. Проверка подходящих данных

  1. Контрольная проверка работы триггера. Выполняем запрос:

Insert Sales.SalesOrderDetail

(SalesOrderID,OrderQty,ProductID,SpecialOfferID,UnitPrice,UnitPriceDiscount)

VALUES (43660,5,680,1,1431,0)

Рис. 10. Проверка работы. Сообщение об ошибке

В результате чего, попытка ввода недопустимых данных была отвергнута

Вывод: В ходе лабораторной работы мы познакомились с особенностями триггеров. Был выполнен ряд упражнений: создание триггера для таблиц, создание триггера на обновление и вставку и выполнение проверки их работы.

28