Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


FOR DROP_TABLE, ALTER_TABLE

Решение

Триггер – это набор инструкций SQL Server, который выглядит и действует подобно хранимой процедуре, но триггер нельзя вызвать с помощью команды EXEC. Триггеры активизируются при выполнении пользователем определенной инструкции Transact-SQL. Существует два вида триггеров:

- DML запускаются с помощью инструкций INSERT, UPDATE или DELETE.

- DDL с помощью инструкций CREATE, ALTER, DROP.

Если вы не хотите, чтобы триггеру передавались записи, нужно добавить команду ROLLBACK в соответствующее место в коде. Команда ROLLBACK указывает серверу остановить обработку модификации и запретить транзакцию.

Существует также команда RAISEERROR с помощью которой вы можете отправить сообщение об ошибке пользователю.

Триггеры INSERT

Триггеры INSERTзапускаются при каждой попытке создать новую запись в таблице с помощью команды INSERT. При попытке вставить новую запись в таблицу SQLServerкопирует эту запись в таблицу триггеров БД и специальную таблицу inserted.

пример: допустим у нас есть таблица «Sotrydnik» БД “Ludi”. Необходимо запретить вставлять запись о сотруднике оклад которого, менее 20000 рублей.

1. Открыть SQL Server Management Studio. В окне Object Explorer развернутьпапкуБД «Ludi” - Programmability – Triggers.

2. Щелкаем правой кнопкой мыши на папке Triggersи выбираем команду NewTriggers.

3. В нашем случае триггер будет выглядеть следующим образом:

 

CREATE TRIGGER primer1

ON sotrydnik

AFTER INSERT

AS

BEGIN

SET NOCOUNT ON;

if (select oklad from inserted)<'20000'

Rollback

print'Вы не можете вставлять запись о сотруднике с окладом менее 20 000 рублей'

END

GO

4. Выполняем триггер, нажав на кнопку на панели инструментов. В результате в нижней части экрана мы увидим строчку «Command(s) completedsuccessfully».

5. Далее сохраняем триггер, щелкнув по кнопке Save

 

Чтобы протестировать новый триггер, необходимо создать запрос, нажав на кнопку New Query , следующего содержания

 

USE LUDI

INSERT SOTRYDNIK

VALUES (‘S28’,’Петров’,’Валерий’,’Михайлович’,’10000’,’2’,’1’)

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

Итак, я создал триггер, который при вставке новой записи, проверяет вводимый оклад.

 

Триггеры DDL.

 

Триггеры DDL применются для инструкций CREATE, ALTER, DROP и т.д.

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

1. Создадим запрос, нажав на кнопку New Query , следующего содержания:

 

USE LUDI

GO

CREATE TRIGGER CANTDROPSOTRYDNIK

ON DATABASE

FOR DROP_TABLE, ALTER_TABLE

AS

PRINT ‘Вы не можете удалять или изменять БД’

ROLLBACK

 

2. Проверим созданный триггер. Создадим запрос, нажав на кнопку New Query ,

следующего содержания:

DROP_TABLES SOTRYDNIK

 

3. Вы увидите сообщение об ошибке:

Вы не можете удалять или изменять БД

 

Вывод: рассмотрел основные виды триггеров, которые повышают производительность БД и «облегчают жизнь программистам»

 



<== предыдущая лекция | следующая лекция ==>
IV группа. Задания на упорядочивание ответов | Затрати ресурсів на реалізацію товарів
Поделиться с друзьями:


Дата добавления: 2016-12-18; Мы поможем в написании ваших работ!; просмотров: 227 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Велико ли, мало ли дело, его надо делать. © Неизвестно
==> читать все изречения...

2455 - | 2137 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.