Разработка триггеров
Автор: 020918 • Ноябрь 27, 2018 • Лабораторная работа • 714 Слов (3 Страниц) • 440 Просмотры
Лабораторная работа 5. Разработка триггеров.
Для реализации приложения «Mishka Food» необходимо разработать следующие триггеры:
- С опцией insert. Запрет на добавление нового заказа, в котором выявлены следующие ограничения:
- Количество порций не должно равняться нулю;
- Дата приема заказа должна совпадать с текущей датой;
- Дата выдачи заказа не должна быть меньше даты приема заказа.
CREATE TRIGGER ZapolZakaza
ON Заказ
FOR INSERT AS
BEGIN
IF ((SELECT [Количество порций] FROM inserted) = 0)
BEGIN
RAISERROR('Количество порций введено некоректно!',1,11)
ROLLBACK TRAN
END
IF (SELECT [Дата приема заказа] FROM inserted)) <> (SELECT GETDATE())
BEGIN
RAISERROR('Дата приема заказа введена не корректно! Дата приема заказа несовподает с текущей датой!',1,11)
ROLLBACK TRAN
END
IF ((SELECT [Дата выдачи заказа] FROM inserted) <(SELECT [Дата приема заказа] FROM inserted))
BEGIN
RAISERROR('Дата выдачи заказа введена не корректно! Дата выдачи заказа не должна быть ранее даты приема заказа!',1,11)
ROLLBACK TRAN
END
END
GO
[pic 1]
Рисунок 1. Триггер на ограничение добавления заказа
[pic 2]
Рисунок 2. Работа триггера на неправильный ввод количества порций
[pic 3]
Рисунок 3. Работа триггера на неправильный ввод даты приема заказа
[pic 4]
Рисунок 4. Работа триггера на неправильный ввод даты выдачи заказа
Работа триггера на правильный ввод данных:
[pic 5]
Рисунок 5. Работа триггера на правильный ввод количества порций
[pic 6]
Рисунок 6. Работа триггера на правильный ввод даты приема заказа
[pic 7]
Рисунок 7. Работа триггера на правильный ввод даты выдачи заказа
- С опцией update. Запрет на изменение в заказе кода клиента.
CREATE TRIGGER IzmenaZakaza
ON Заказ
AFTER UPDATE AS
BEGIN
SET NOCOUNT ON;
IF UPDATE ([Код клиента])
PRINT 'Запрещено изменять код клиента!'
ROLLBACK
END
GO
[pic 8]
Рисунок 5. Триггер на ограничение изменения заказа
[pic 9]
Рисунок 6. Работа триггера
- С опцией delete. Запрет на удаление заказа из базы.
CREATE TRIGGER DelZakaz
ON Заказ
AFTER DELETE
AS
IF (SELECT [Код заказа] FROM deleted) IS NOT NULL
BEGIN
RAISERROR('Из базы запрещено удалять заказ!',1,11)
ROLLBACK TRAN
END
GO
[pic 10]
Рисунок 7. Триггер на запрет удаления заказа
[pic 11]
Рисунок 8. Работа триггера
- Триггеры after или for. Запрет на изменение даты приема заказа.
CREATE TRIGGER IzmenaZakazaDataPriema
ON Заказ
AFTER UPDATE AS
BEGIN
SET NOCOUNT ON;
...