Приклад 14.1. Використання тригера для реалізації обмежень на значення. В додається в таблицю Угода записи кількість проданого товару має бути не більше, ніж його залишок з таблиці Склад.
Команда вставки запису в таблицю Угода може бути, наприклад, такий:
Створюваний тригер повинен відреагувати на її виконання таким чином: необхідно скасувати команду, якщо в таблиці Склад величина залишку товару виявилася менше продаваного кількості товару з введенням кодом (в прикладі код товару = 3). У вставляється записи кількість товару вказується зі знаком "+", якщо товар поставляється, і зі знаком "-", якщо він продається. Представлений тригер налаштований на обробку тільки однієї додається записи.
Приклад 14.1. Використання тригера для реалізації обмежень на значення.
Приклад 14.2. Використання тригера для збору статистичних даних.
Створити тригер для обробки операції вставки запису в таблицю Угода. наприклад, такої команди:
поставляється товар з кодом 3 від клієнта з кодом 1 в кількості 200 одиниць.
При продажу або отриманні товару необхідно відповідним чином змінити кількість його складського запасу. Якщо товару на складі ще немає, необхідно додати відповідний запис в таблицю Склад. Тригер обробляє тільки одну додається рядок.
Приклад 14.2. Використання тригера для збору статистичних даних.
Приклад 14.3. Створити тригер для обробки операції видалення запису з таблиці Угода. наприклад, такої команди:
Для товару, код якого зазначений при видаленні запису, необхідно відкоригувати його залишок на складі. Тригер обробляє тільки одну удаляемую запис.
Приклад 14.3. Тригер для обробки операції видалення запису з таблиці
Приклад 14.4. Створити тригер для обробки операції зміни запису в таблиці Угода. наприклад, такою командою:
у всіх операціях з товаром, що має код, який дорівнює 3, зменшити кількість товару на 10 одиниць.
Зазначена команда може привести до зміни відразу декількох записів в таблиці Угода. Тому покажемо, як створити тригер. обробляє не одну запис. Для кожної зміненої записи необхідно для старого (до зміни) коду товару зменшити залишок товару на складі на величину старого (до зміни) кількості товару і для нового (після зміни) коду товару збільшити його залишок на складі на величину нового (після зміни) значення. Щоб обробити всі змінені записи, введемо курсори, в яких збережемо всі старі (з таблиці deleted) і все нові значення (з таблиці inserted).
Приклад 14.4. тригер для обробки операції зміни запису в таблиці
У розглянутому тригері відсутня порівняння кількості товару при зміні записи про угоду з його залишком на складі.
Приклад 14.5. Виправимо цей недолік. Для генерування повідомлення про помилку використовуємо в тілі тригера команду MS SQL Server RAISERROR. аргументами якої є текст повідомлення, рівень серйозності і статус помилки.
Приклад 14.5. Виправлений варіант тригера для обробки операції зміни запису в таблиці
Приклад 14.6. У прикладі 14.5 відбувається скасування всіх змін при неможливості реалізувати хоча б одне з них. Створимо тригер. дозволяє скасовувати зміна тільки деяких записів і виконувати зміну інших.
В цьому випадку тригер виконує не після зміни записів, а замість команди зміни.
Приклад 14.6. Тригер, який дозволяє скасовувати зміна тільки деяких записів і виконувати зміну інших.