Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой_SQL.doc
Скачиваний:
19
Добавлен:
21.11.2018
Размер:
1.68 Mб
Скачать
    1. Создание триггера

Триггеры – особый инструмент SQL-сервера, используемый для поддержания целостности данных в базе данных. С помощью ограничений целостности, правил и значений по умолчанию не всегда можно добиться нужного уровня функциональности. Часто требуется реализовать сложные алгоритмы проверки данных, гарантирующие их достоверность и реальность. Кроме того, иногда необходимо отслеживать изменения значений таблицы, чтобы нужным образом изменить связанные данные. Триггеры можно рассматривать как своего рода фильтры, вступающие в действие после выполнения всех операций в соответствии с правилами, стандартными значениями и т.д.

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

Существует три типа триггеров:

INSERT TRIGGER – запускаются при попытке вставки данных с помощью команды INSERT.

UPDATE TRIGGER – запускаются при попытке изменения данных с помощью команды UPDATE.

DELETE TRIGGER – запускаются при попытке удаления данных с помощью команды DELETE.

Для примера создан триггер, который запретит любому пользователю ввести нового поставщика в соответствующую таблицу, если последний из Москвы. Триггер показан на рисунке 13.

Рисунок 13 – Триггер запрета ввода новой записи по условию

Скрипт создания триггера приведён ниже:

CREATE TRIGGER MoscowHaters

ON Postavshiki

AFTER INSERT

AS

BEGIN

SET NOCOUNT ON;

if (select Firm_city from Postavshiki)='Moscow'

rollback

print 'We do not work with Moscow!'

END

При желании добавить данного поставщика будет показано сообщение об ошибке, пример показан на рисунке 14.

Рисунок 14 – сообщение об ошибке посредством триггера 1

Триггер №2. Триггер DDL.

USE CD_Shop

GO

CREATE TRIGGER CantDropMe

ON DATABASE

FOR DROP_TABLE

AS PRINT 'You cannot delete tables!'

ROLLBACK

Данный триггер предотвращает попытку удаления любой таблицы из базы данных CD_shop, при этом показывая сообщение об ошибке. Пример показан на рисунке 15.

Рисунок 15 – Сообщение об ошибке, вызываемое триггером 2

    1. Создание пользователей

Для БД Магазин компакт дисков были созданы 2 пользователя: Manager и Seller. Создание их в Windows показано на рисунке 16.

Рисунок 16 – Создание пользователей в Windows

Далее в MSSQL был создан пользователь Manager с правами sysadmin (рисунок 17) и пользователь Seller с правами public и схемой по умолчанию datareader (рисунок 18)

Рисунок 17 – Роль sysadmin для пользователя Manager

Рисунок 18 – Назначение прав пользователю Seller внутри SQL Server

При попытке, например, создать новую таблицу, пользователю Seller будет показано сообщение об ошибке, как показано на рисунке 19.

Разграничение прав пользователей позволяет защитить данные, как от несанкционированного доступа, так и от случайных действий определенного круга пользователей.

Рисунок 19 – Сообщение об ошибке для пользователя Seller