Введение

Создание и оптимизация триггеров в SQL Server

Florin Angelescu

Instructor

Что такое триггер?

  • Особый тип хранимой процедуры
  • Выполняется при наступлении события на сервере базы данных

Принцип работы триггера

Создание и оптимизация триггеров в SQL Server

Типы триггеров (по командам T-SQL)

  • Триггеры языка манипулирования данными (DML)
    • Операторы INSERT, UPDATE или DELETE
  • Триггеры языка определения данных (DDL)
    • Операторы CREATE, ALTER или DROP
  • Триггеры входа
    • События LOGON
Создание и оптимизация триггеров в SQL Server

Типы триггеров (по поведению)

  • Триггер AFTER

    • Исходный оператор выполняется
    • Затем запускаются дополнительные операторы
  • Примеры применения

    • Перестроить индекс после большой вставки
    • Уведомить администратора при обновлении данных
Создание и оптимизация триггеров в SQL Server

Типы триггеров (по поведению)

  • Триггер INSTEAD OF

    • Исходный оператор не выполняется
    • Вместо него выполняется замещающий оператор
  • Примеры применения

    • Запрет вставки
    • Запрет обновления
    • Запрет удаления
    • Запрет изменения объектов
    • Уведомление администратора
Создание и оптимизация триггеров в SQL Server

Определение триггера (с AFTER)

-- Create the trigger by giving it a descriptive name
CREATE TRIGGER ProductsTrigger

-- The trigger needs to be attached to a table ON Products
-- The trigger behavior type AFTER INSERT
-- The beginning of the trigger workflow AS
-- The action executed by the trigger PRINT ('An insert of data was made in the Products table.');
Создание и оптимизация триггеров в SQL Server

Определение триггера (с INSTEAD OF)

-- Create the trigger by giving it a descriptive name
CREATE TRIGGER PreventDeleteFromOrders
-- The trigger needs to be attached to a table
ON Orders
-- The trigger behavior type
INSTEAD OF DELETE
-- The beginning of the trigger workflow
AS
-- The action executed by the trigger
PRINT ('You are not allowed to delete rows from the Orders table.');
Создание и оптимизация триггеров в SQL Server

AFTER и INSTEAD OF

CREATE TRIGGER MyFirstAfterTrigger
ON Table1
-- Triggered after 
-- the firing event (UPDATE)
AFTER UPDATE
AS
{trigger_actions_section};
CREATE TRIGGER MyFirstInsteadOfTrigger
ON Table2
-- Triggered instead of 
-- the firing event (UPDATE)
INSTEAD OF UPDATE
AS
{trigger_actions_section};
Создание и оптимизация триггеров в SQL Server

Давайте потренируемся!

Создание и оптимизация триггеров в SQL Server

Preparing Video For Download...