Найти в Дзене
HelpSysAdmin

Создание триггеров в среде SQL Server Management Studio.

Триггер – это сочетание хранимой в базе данных процедуры и события, которое заставляет ее выполняться. Такими событиями могут быть: ввод новой строки таблицы, изменение значений одного или нескольких ее столбцов и (или) удаление строки таблицы. При любом из этих событий автоматически запускаются один или несколько заранее созданных триггеров, которые производят проверку запрограммированных в них условий, и если они не выполняются, отменяют ввод, изменение или удаление, посылая об этом заранее подготовленное сообщение пользователю. Триггеры похожи на процедуры и функции тем, что также являются именованными блоками и имеют раздел объявлений, выполняемый раздел и раздел обработки исключительных ситуаций. Подобно процедурам и функциям, триггеры хранятся как автономные объекты в базе данных. Триггеры позволяют: Триггеры также делятся на три основных типа. Рассмотрим создание и работу триггера. Создадим триггеры для таблицы «Artworks». Триггеры создаются отдельно для
каждой таблицы и распола

Триггер – это сочетание хранимой в базе данных процедуры и события, которое заставляет ее выполняться. Такими событиями могут быть: ввод новой строки таблицы, изменение значений одного или нескольких ее столбцов и (или) удаление строки таблицы. При любом из этих событий автоматически запускаются один или несколько заранее созданных триггеров, которые производят проверку запрограммированных в них условий, и если они не выполняются, отменяют ввод, изменение или удаление, посылая об этом заранее подготовленное сообщение пользователю.

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

Триггеры позволяют:

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

Триггеры также делятся на три основных типа.

  • Триггеры DML активизируются предложениями ввода, обновления и удаления информации (INSERT, UPDATE, DELETE) до или после выполнения
    предложения, на уровне строки или таблицы.
  • Триггеры замещения (instead of) можно создавать только для представлений
    (либо объектных, либо реляционных). В отличие от триггеров DML, которые
    выполняются в дополнение к предложениям DML, триггеры замещения
    выполняются вместо предложений DML, вызывающих их срабатывание.
  • Системные триггеры активизируется не на предложение DML, выполняемое
    над таблицей, а на системное событие, например, на запуск или останов базы
    данных. Системные триггеры срабатывают и на предложения DDL, такие как
    создание таблицы.

Рассмотрим создание и работу триггера.

Создадим триггеры для таблицы «Artworks». Триггеры создаются отдельно для
каждой таблицы и располагаются в обозревателе объектов в папке «Триггеры», как показано на скриншоте ниже:

Расположение триггеров в таблице SQL
Расположение триггеров в таблице SQL

Для начала создадим триггер, выводящий сообщение «Запись добавлена» при
добавлении записи в таблицу «Artworks». Создадим новый триггер, щёлкнув правой кнопкой мыши по папке «Триггеры» в таблице «Artworks» и выбрав в появившемся меню пункт «Создать триггер». Появится окно с новым триггером (смотрим скриншот ниже).

Добавление нового триггера в таблицу SQL
Добавление нового триггера в таблицу SQL

Структура триггера:

  • область определения имени триггера (Trigger_Name);
  • область, показывающая для какой таблицы создаётся триггер (Table_Name);
  • область, показывающая, когда выполнять триггер (INSERT – при создании
    записи в таблице, DELETE – при удалении и UPDATE – при изменении);
  • тело триггера, содержащее команды языка T-SQL.

В окне нового триггера наберем следующий код:

CREATE TRIGGER Insert_trigger

ON dbo.Artworks

AFTER INSERT

AS

BEGIN

SET NOCOUNT ON;

PRINT('Запись добавлена!');

END

Go

Как на рисунке ниже:

Создание своего триггера в SQL
Создание своего триггера в SQL

Проверим, как работает новый триггер. Создадим новый пустой запрос и в нём
выполним добавление данных в таблицу «Artworks»

Проверка работы созданного триггера в SQL
Проверка работы созданного триггера в SQL

Выполним набранную команду, нажав кнопку «Выполнить» на панели
инструментов. В таблицу будет добавлена новая запись, и триггер выведет сообщение «Запись добавлена!»

Аналогичным образом создаются триггеры, выводящие сообщения при изменении данных в таблице. Код представлен на скриншоте ниже.

Код триггера, срабатывающий на изменение данных в таблице
Код триггера, срабатывающий на изменение данных в таблице

На этом всё, в данной статье мы рассмотрели базовую теорию и несколько простых примеров создания и работы триггера.