Триггеры AFTER (DML)

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

Florin Angelescu

Instructor

Определение и свойства

  • Выполняет набор действий при срабатывании
  • Действия выполняются только после завершения DML-события
  • Используется с операторами INSERT, UPDATE и DELETE для таблиц или представлений
Создание и оптимизация триггеров в SQL Server

Предварительные условия триггера AFTER

  • Для DML-операторов необходима таблица или представление
  • Триггер будет привязан к этой же таблице

Данные из таблицы Products, используемые в этом примере:

| Product | Price | Currency | Quantity | Measure |
|---------|-------|----------|----------|---------|
| Apple   | 2.00  | USD      | 25000    | kg      |
| Apricot | 1.55  | USD      | 2500     | kg      |
| Avocado | 3.00  | USD      | 1000     | kg      |
| Banana  | 1.80  | USD      | 35000    | kg      |
Создание и оптимизация триггеров в SQL Server

Предварительные условия триггера AFTER

  • Целевая таблица
  • Описание триггера
  • Событие срабатывания триггера (DML)
  • Имя триггера
  • Products
  • Сохранять данные об удалённых товарах в таблицу истории
  • DELETE
  • TrackRetiredProducts
Создание и оптимизация триггеров в SQL Server

Сводка предварительных условий триггера AFTER

Когда строки удаляются из таблицы Products...

Сохранить необходимые данные из этих строк в таблицу RetiredProducts.

| Product | Price | Currency | Quantity | Measure |
|---------|-------|----------|----------|---------|
| Apple   | 2.00  | USD      | 25000    | kg      |
| Apricot | 1.55  | USD      | 2500     | kg      | X
| Avocado | 3.00  | USD      | 1000     | kg      |
| Banana  | 1.80  | USD      | 35000    | kg      |
| Product | Measure | RemovalDate |
|---------|---------|-------------|
| Apricot | kg      | 19.04.2019  |
Создание и оптимизация триггеров в SQL Server

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

CREATE TRIGGER TrackRetiredProducts

ON Products
AFTER DELETE
AS INSERT INTO RetiredProducts (Product, Measure) SELECT Product, Measure FROM deleted;
Создание и оптимизация триггеров в SQL Server

Таблицы «inserted» и «deleted»

  • Специальные таблицы, используемые DML-триггерами
  • Создаются автоматически SQL Server
Создание и оптимизация триггеров в SQL Server

Таблицы «inserted» и «deleted»

  • Специальные таблицы, используемые DML-триггерами
  • Создаются автоматически SQL Server
Специальная таблица INSERT UPDATE DELETE
inserted новые строки новые строки Н/Д
deleted Н/Д изменённые строки удалённые строки
Создание и оптимизация триггеров в SQL Server

Полный триггер AFTER

CREATE TRIGGER TrackRetiredProducts
ON Products
AFTER DELETE
AS
    INSERT INTO RetiredProducts (Product, Measure)
    SELECT Product, Measure
    FROM deleted;
Создание и оптимизация триггеров в SQL Server

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

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

Preparing Video For Download...