Тригер — це збережена процедура в базі даних, яка автоматично запускається щоразу, коли відбувається спеціальна подія в базі даних. Наприклад, тригер можна викликати, коли рядок вставляється в указану таблицю або коли оновлюються певні стовпці таблиці. Простими словами, тригер – це сукупність SQL оператори з певними іменами, які зберігаються в системній пам'яті. Він належить до певного класу збережених процедур, які автоматично викликаються у відповідь на події сервера бази даних. До кожного тригера додається таблиця.
Оскільки тригер не можна викликати безпосередньо, на відміну від збереженої процедури, його називають спеціальною процедурою. Тригер автоматично викликається щоразу, коли відбувається зміна даних у таблиці, що є основною відмінністю між тригером і процедурою. З іншого боку, збережену процедуру потрібно викликати безпосередньо.
Нижче наведено основні відмінності між тригерами та збереженими процедурами:
- Тригери не можна викликати або виконувати вручну.
- Немає шансів, що тригери отримають параметри.
- Транзакцію неможливо зафіксувати або відкотити всередині тригера.
Синтаксис:
створити тригер [trigger_name]
[перед | після]
вставка
арахіс проти арахісуна [table_name]
[для кожного рядка]
[trigger_body]
Пояснення синтаксису
- Створити тригер [trigger_name]: створює або замінює існуючий тригер на trigger_name.
- [перед | після]: це вказує, коли тригер буде виконано.
- вставити: це визначає операцію DML.
- На [table_name]: це визначає ім’я таблиці, пов’язаної з тригером.
- [для кожного рядка]: це вказує тригер на рівні рядка, тобто тригер буде виконано для кожного рядка, на який впливає.
- [trigger_body]: це забезпечує операцію, яка виконується під час запуску тригера
Чому ми використовуємо тригери?
Коли нам потрібно виконати деякі дії автоматично в певних бажаних сценаріях, тригери будуть корисні. Наприклад, ми повинні знати про частоту та час змін у таблиці, яка постійно змінюється. У таких випадках ми могли б створити тригер, щоб вставити необхідні дані в іншу таблицю, якщо основна таблиця зазнала будь-яких змін.
Різні типи тригерів у SQL Server
Існує дві категорії тригерів:
- Тригер DDL
- Тригер DML
- Тригери входу
Тригери DDL
Події команди мови визначення даних (DDL), такі як Create_table, Create_view, drop_table, Drop_view і Alter_table, викликають активацію тригерів DDL.
SQL Server
create trigger safety on database for create_table,alter_table,drop_table as print 'you can not create,drop and alter tab>
Вихід:
Тригери DML
Дані використовують командні події мови маніпулювання (DML), які починаються з Insert, Update та Delete, і запускають тригери DML. що відповідає insert_table, update_view і delete_table.
SQL Server
create trigger deep on emp for insert,update ,delete as print 'you can not insert,update and delete this table i' rollback;>
Вихід:
Тригери входу
Тригери входу спрацьовують у відповідь на подію LOGON. Коли сеанс користувача створюється з екземпляром SQL Server після завершення процесу автентифікації журналювання, але до встановлення сеансу користувача, відбувається подія LOGON. У результаті повідомлення оператора PRINT і будь-які помилки, створені тригером, відображатимуться в журналі помилок SQL Server. Помилки автентифікації перешкоджають використанню тригерів входу. Ці тригери можна використовувати для відстеження активності входу або встановлення обмеження на кількість сеансів, які може мати даний логін, щоб перевіряти та керувати сеансами сервера.
Як SQL Server Show Trigger?
Тригер show або list корисний, коли у нас багато баз даних із багатьма таблицями. Цей запит дуже корисний, коли імена таблиць однакові в кількох базах даних. Ми можемо переглянути список усіх тригерів, доступних у SQL Server, за допомогою команди нижче:
bash else if
Синтаксис:
FROM sys.triggers, SELECT name, is_instead_of_trigger
IF type = 'TR';
SQL Server Management Studio дозволяє дуже просто відобразити або створити список усіх тригерів, доступних для будь-якої таблиці. Наступні кроки допоможуть нам це зробити:
Перейти до Бази даних виберіть потрібну базу даних, а потім розгорніть її.
- Виберіть Таблиці меню та розгорніть його.
- Виберіть будь-яку конкретну таблицю та розгорніть її.
Тут ми знайдемо різні варіанти. Коли ми вибираємо Тригери параметр, він відображає всі тригери, доступні в цій таблиці.
Тригери BEFORE і AFTER
Тригери BEFORE запускають дію тригера перед виконанням оператора ініціювання. Тригери AFTER запускають дію тригера після виконання оператора ініціювання.
приклад
Дана база даних звітів студентів, у якій фіксуються оцінки студентів. У такій схемі створіть тригер, щоб загальна кількість і відсоток указаних позначок автоматично вставлялися щоразу, коли вставляється запис.
755 мод
Тут тригер запускатиметься до того, як буде вставлено запис, тому можна буде використовувати тег BEFORE.
Припустимо, схема бази даних
Запит
mysql>>desc Студент;>
Тригер SQL до формулювання проблеми.
Наведений вище оператор SQL створить тригер у базі даних студентів, у який щоразу, коли вводяться оцінки предметів, перед вставленням цих даних у базу даних тригер обчислить ці два значення та вставить їх із введеними значеннями. тобто
Вихід
Таким чином тригери можуть створюватися та виконуватися в базах даних.
типи циклу for
Перевага тригерів
Переваги використання тригерів у SQL Server включають наступне:
- Правила об’єктів бази даних встановлюються тригерами, які призводять до скасування змін, якщо вони не виконуються.
- Тригер перевірить дані та, якщо необхідно, внесе зміни.
- Ми можемо забезпечити цілісність даних завдяки тригерам.
- Перед вставленням або оновленням дані перевіряються за допомогою тригерів.
- Тригери допомагають нам вести журнал записів.
- Через те, що їх не потрібно компілювати щоразу, коли вони запускаються, тригери покращують продуктивність SQL-запитів.
- Код на стороні клієнта зменшується за допомогою тригерів, що економить час і працю.
- Обслуговування тригера просте.
Недолік тригерів
До недоліків використання тригерів у SQL Server можна віднести наступне:
- Лише тригери дозволяють використовувати розширені перевірки.
- Використовуються автоматичні тригери, і користувач не знає, коли вони виконуються. Отже, важко усунути проблеми, які виникають на рівні бази даних.
- Накладні витрати на сервер бази даних можуть збільшитися в результаті тригерів.
- В одному операторі CREATE TRIGGER ми можемо вказати ту саму дію тригера для кількох дій користувача, наприклад INSERT і UPDATE.
- Лише поточна база даних доступна для створення тригерів, але вони все одно можуть посилатися на об’єкти поза базою даних.
Питання що часто задаються
Q1: Що таке тригер SQL?
відповідь:
Тригер SQL — це об’єкт бази даних, пов’язаний із таблицею та автоматично виконує набір інструкцій SQL, коли в цій таблиці відбувається певна подія. Тригери використовуються для забезпечення виконання бізнес-правил, підтримки цілісності даних і автоматизації певних дій у базі даних. Вони можуть бути викликані різними подіями, такими як вставка, оновлення або видалення даних у таблиці, і вони дозволяють виконувати додаткові операції на основі цих подій.
Q2: Як працюють тригери SQL?
відповідь:
Тригери SQL визначаються за допомогою операторів SQL і пов’язані з певною таблицею. Коли визначена подія тригера (наприклад, INSERT, UPDATE, DELETE) відбувається в цій таблиці, відповідний код тригера виконується автоматично. Тригерний код може складатися з операторів SQL, які можуть маніпулювати даними в тій самій або інших таблицях, накладати обмеження або виконувати інші дії. Тригери виконуються в межах транзакції, і їх можна визначити для виконання до або після події, що запускає.
Q3: Які переваги використання тригерів SQL?
відповідь:
Переваги використання тригерів SQL включають:
Цілісність даних: тригери дозволяють застосовувати складні бізнес-правила та обмеження на рівні бази даних, забезпечуючи послідовність і точність даних.
Автоматизація: тригери можуть автоматизувати повторювані або складні завдання, виконуючи заздалегідь визначені дії щоразу, коли відбувається певна подія. Це зменшує потребу в ручному втручанні та підвищує ефективність.
Журнали аудиту: тригери можна використовувати для відстеження змін, внесених до даних, наприклад журналювання змін в окремій таблиці аудиту. Це допомагає перевіряти та підтримувати історію змін даних.
Перевірка даних: тригери можуть виконувати додаткові перевірки даних перед їх вставленням, оновленням або видаленням, гарантуючи, що в базі даних зберігаються лише дійсні та відповідні дані.