Вступ

Створення та оптимізація тригерів у 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 vs. 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...