Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект по ПиОБД.docx
Скачиваний:
207
Добавлен:
06.02.2016
Размер:
177.94 Кб
Скачать

2.4. Создание триггеров

Триггер - это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события - добавлением INSERT или удалением DELETE строки в заданной таблице, или модификации UPDATE данных в определенном столбце заданной таблицы реляционной базы данных.

Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. В случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции. Тем самым внесение изменений запрещается, отменяются также все изменения, уже сделанные триггером. Создает триггер только владелец базы данных. Для базы данных «Кондитерская фабрика» создадим три триггера:

1) Триггер типа UPDATE печатает определенный текст, при каждой модификации таблицы «Водители». Триггер- (рисунок 5).

Рисунок 5 - Триггер типа UPDATE

Будет возвращено сообщение «В таблицу были внесены изменения (строк обработано: 1)», так как в результате выполнения оператора UPDATE был запущен триггер. В данном триггере мы задали вывод сообщения, чтобы можно было увидеть работу триггера;

2) Триггер типа DELETEбудет сохранять все строки, удаленные из таблицы «Доставка», в таблицу «Доставка_Корзина» для последующего анализа данных. Код создания триггераDELETE, внесение строки в таблицу «Доставка» и её удаление, приведены на рисуноке 6.

Создание триггера «Доставка_Корзина»:

CREATE TRIGGER Корзина

ON Доставки

FOR DELETE

AS

INSERT INTO Доставки_Корзина

SELECT * FROM Доставки_Корзина

GO

Рисунок 6 - Триггер типа DELETE

Отметим, что надпись о количестве обработанных строк отобразилась дважды. Первый это непосредственно удаление строки, а второй запись ее в таблицу «Доставка_Корзина». Это возможно потому, что резервной таблице присвоены те же имена колонок и те же типы данных, что и в исходной таблице. Изначально таблица «Доставка_Корзина» не содержит записей, она будет заполняться по мере удаления записей из таблицы «Доставка»;

3) Триггер INSERT для таблицы «Заказы» будет проверять указано ли количество изделия (хотя бы 1). Проверка триггера представлена на рисунке 7:

-- создание триггера типа INSERT

CREATE TRIGGER Триггер3

ON Заказы

AFTER INSERT

AS

IF (SELECT КОЛИЧЕСТВО FROM ЗАКАЗЫ) < 1

ROLLBACK

Рисунок 7 - Проверка триггера типа INSERT

3. Создание запросов

3.1. Создание запросов к базе данных

С помощью запросов мы выбираем необходимую информацию из базы данных.

Создадим два запроса к базе данных «Кондитерская фабрика»:

1) Найдем кондитерские изделия стоимость которых меньше двух недель:

SELECT Наименование,

Срок годности,

Дата_изготовления

FROM Кондитерские_изделия

WHERE Срок годности<14

2) Найдем все шоколадные батончики из таблицы «Кондитерские изделия»

SELECT Наименование

FROM Кондитерские_изделия

WHERE Наименование

LIKE '%Шоколадный батончик%'

3.2. Создание представлений

Представление – это виртуальная таблица, определяемая запросом, содержащим оператор SELECT. Эта виртуальная таблица состоит из данных одной или нескольких реальных таблиц, а для пользователей представление выглядит, как реальная таблица. Пользователи могут обращаться к этим виртуальным таблицам в операторах Transaсt-SQL таким же образом, как и к таблицам. К представлению можно применять операции SELECT, INSERT, UPDATE и DELETE. Создание представлений осуществляется с помощью оператора CREATE VIEW языка T-SQL.

Создадим три представления для разных таблиц базы данных:

1) Представление по таблице «Водители»:

CREATE VIEW Водители_представление

AS SELECT

Номер_водителя,

Фамилия,

Имя,

Отчество

FROM Водители

2) Представление для таблицы «Доставка», в котором выводятся все номера водителей меньше 13:

CREATE VIEW Доставки_представление

AS SELECT

Дата_вывоза,

Дата_доставки,

Номер_водителя

FROM Доставки

WHERE Номер_водителя<003

3) Представление для таблицы «Кондитерские изделия», в котором выводятся только те строки в которых цена изделия превышает 300 рублей:

CREATE VIEW Кондитерские_изделия_представление

AS SELECT

Наименование

FROM Кондитерские_изделия

WHERE Цена >300