Давайте обговоримо деякі додаткові відмінності між тригером і процедурою за допомогою діаграми порівняння, показаної нижче.
Діаграма порівняння
Основа для порівняння | Тригери | Процедури |
---|---|---|
Основний | Вони автоматично виконуються при виникненні вказаної події. | Вони можуть бути виконані в будь-який час. |
Виклик | Тригери не можна викликати всередині процедури. | Але, ви можете викликати процедуру всередині тригера. |
Параметр | Ми не можемо передавати параметри тригерам. | Ми можемо передавати параметри процедурам. |
Повернення | Тригер ніколи не повертає значення при виконанні. | Процедура може повернути значення / с при виконанні. |
Визначення тригера
Тригер подібний до процедури, яка виконується автоматично при виникненні вказаної події. Як і процедура, тригер не потрібно називати явно. Тригери створюються, щоб виконати деяке завдання у відповідь на виникнення деякого зазначеного події.
Тригер може бути викликаний у відповідь на DDL- висловлювання (DELETE, INSERT або UPDATE) або DML- висловлювання (DELETE, INSERT або UPDATE) або на деякі операції бази даних (SERVERERROR, LOGON, LOGOFF, STARTUP або SHUTDOWN).
Тригер складається з трьох компонентів, як описано нижче:
- Подія : подія - це випадок деякого інциденту, який викличе виконання тригера. Тригер може бути впорядкований для виконання або перед тим, як відбудеться подія, або може бути наказано виконати після виконання події.
- Умова : це необов'язкова частина тригера. Якщо не згаданий тригер буде виконуватися як зазначена подія відбувається. Якщо умова вказана, то перевірятимуться правила, щоб визначити, чи слід виконувати тригер.
- Action : Action - це набір операторів SQL, які будуть виконуватися при виконанні тригера.
Загальна форма створення події розглядається нижче:
СТВОРИТИ ТРИГГЕР ПЕРЕД / ПІСЛЯ ДІЇ УМОВУ;
Тут умова є необов'язковою.
Визначення процедур
Процедура може бути прийнята як програмний блок, створений для виконання деякого завдання і він зберігається в базі даних. Вони запускаються за допомогою оператора SQL, коли це потрібно. Процедури подібні до визначених користувачем функцій, які визначаються розробниками. Процедури можна викликати за допомогою CALL або EXECUTE .
Процедури корисні в наступних ситуаціях:
- Якщо процедура вимагається декількома іншими програмами, то вона може зберігатися на сервері так, щоб їх можна було викликати будь-якою програмою. Це дозволить зменшити зусилля дублювання процедури з однієї бази даних на іншу, а також покращить модульність програмного забезпечення.
- Оскільки процедура виконується на сервері, вона зменшить передачу даних і зменшить вартість зв'язку.
- Процедури можуть використовуватися для перевірки складних обмежень, які виходять за межі тригера.
Розглянемо загальну форму створення процедури:
СТВОРИТИ ПРОЦЕДУРУ () ВІДНОВЛЕННЯ;
Тут параметри та локальні декларації є необов'язковими. Вони згадуються лише тоді, коли вони потрібні. У наведеному нижче описі описано виклик процедур.
CALL ();
Основні відмінності між тригером і процедурою
- Основною відмінністю між тригером і процедурою є те, що тригер - це оператор, який автоматично викликається, коли відбувається подія. З іншого боку, процедура викликається, коли це потрібно.
- Можна визначити процедуру всередині тригера. Але тригер ніколи не визначається всередині процедури, оскільки тригер повинен бути викликаний автоматично при виникненні будь-якої події.
- Ми можемо передавати параметри процедурам, але ми не можемо передавати параметри, щоб викликати, як це не викликається нами.
- Процедура може повертати значення параметрів або код, але тригер не може.
Висновок:
Тригери корисні, але вони уникаються, якщо існують які-небудь альтернативи їм, оскільки це збільшує складність даних. Іноді тригери також є замінниками відповідної процедури.