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

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

 

DECLARE

@TAB_NOM VARCHAR(20),

@FAM VARCHAR(20),

@NAME VARCHAR(20),

@OTCH VARCHAR(20),

@OKLAD VARCHAR(20),

@TELEFON VARCHAR(20)

 

SET @TAB_NOM VARCHAR(20),

SET @FAM VARCHAR(20),

SET @NAME VARCHAR(20),

SET @OTCH VARCHAR(20),

SET @OKLAD VARCHAR(20),

 

Insert sotrydnik

VALUES (@TAB_NOM, @FAM, @NAME, @OTCH, @OKLAD, @TELEFON)

 

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

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

6. Удостоверимся в работе триггера, для этого создадим запрос, нажав на кнопку New Query  , следующего содержания

 

USE SOTRYDNIK

INSERT PHX_SOTRYDNIK

VALUES (‘S40’,’Иванов’,’Алексей’,’Юрьевич’,’33000’,’89152367896’)

 

Ошибок НЕ произошло, данная запись была успешна вставлена.

 

Расширенные технологии.

 

Данные технологии позволяют использовать триггеры INSERT,UPDATE, DELETEвместе, что повышает производительность БД.

 

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

 

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

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

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

 

CREATE TRIGGER primer5

   ON sotrydnik

   AFTER INSERT,DELETE

AS

BEGIN

    SET NOCOUNT ON;

begin

if (select oklad from inserted)<'20000'

rollback

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

end

begin

if (select oklad from deleted)>='50000'

print'Нельзя удалять запись о сотрудике, оклад которого более  50000'

rollback

END

END

GO

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

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

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

 

USE LUDI

DELETE SOTRYDNIK

WHERE OKLAD=’55000’

 

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

Нельзя удалять запись о сотруднике, с окладом более 50000’

 

 

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

 

 

 

USE LUDI

Insert sotrydnik

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

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

 

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

 

Формирование сообщений об ошибках. Функция raiserror().

 

Данная функция позволяет формировать сообщение об ошибках.

 

Формат:

RAISERROR(‘Сообщение’, степень_серьезности, состояние)

 

Параметр ‘Сообщение’ – это текст, который будет читать пользователь при нарушении правил триггера.

 

Параметр ‘степень_серьезности’ указывает системе минимальный уровень серьезности ошибки.

Ошибкам можно задавать разную степень серьезности, начиная с 1 и заканчивая 25(самая критическая ошибка).

 

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

 

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

 

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]