W tym artykule na przykładzie poznamy pojęcie wyzwalacza w SQL i jego implementację.
Wyzwalacz w strukturalnym języku zapytań to zestaw instrukcji proceduralnych wykonywanych automatycznie po pojawieniu się informacji zwrotnej dotyczącej określonych zdarzeń w tabeli w bazie danych. Wyzwalacze służą do ochrony integralności danych w bazie danych.
Zobaczmy następującą sytuację, aby zrozumieć pojęcie wyzwalacza w SQL:
Załóżmy, że Supriya jest menedżerem ds. technologii informatycznych w międzynarodowej firmie. Po wprowadzeniu do bazy danych nowego pracownika, musi on każdemu nowemu pracownikowi wysłać wiadomość „Gratulacje”. Jeśli jest pięciu lub sześciu pracowników, Supriya może to zrobić ręcznie, ale jeśli liczba nowych Pracowników jest większa niż tysiąc, to w takim stanie musi użyć wyzwalacza w bazie danych.
W związku z tym Supriya musi utworzyć wyzwalacz w tabeli, który automatycznie wyśle wiadomość „Gratulacje” do nowych pracowników, gdy ich rekord zostanie wstawiony do bazy danych.
Wyzwalacz jest zawsze wykonywany z określoną tabelą w bazie danych. Jeśli usuniemy tabelę, wszystkie wyzwalacze powiązane z tą tabelą również zostaną automatycznie usunięte.
Wyzwalacze w strukturalnym języku zapytań są wywoływane tylko przed wystąpieniem zdarzenia lub po jego wystąpieniu.
Tylko trzy zdarzenia występują w wyzwalaczu przed lub po zdarzeniach to zdarzenia Insert, Update lub Delete.
1. WSTAW wydarzenie :Zdarzenie Insert występuje za każdym razem, gdy nowy rekord jest wstawiany do tabeli.
2. AKTUALIZUJ wydarzenie :Zdarzenie aktualizacji występuje zawsze, gdy istniejące rekordy są aktualizowane w tabeli.
3. USUŃ wydarzenie: Zdarzenie Usuń występuje zawsze, gdy rekord jest usuwany z tabeli.
Typy wyzwalaczy w strukturalnym języku zapytań
Poniżej znajduje się sześć typów wyzwalaczy używanych w strukturalnym języku zapytań:
1. PO WSTAWIENIU Wyzwalacz:
Wyzwalacz po wstawieniu jest wywoływany w SQL po wstawieniu rekordów do tabeli.
2. PO AKTUALIZACJI Wyzwalacz:
Wyzwalacz po aktualizacji jest wywoływany w SQL po zaktualizowaniu istniejących rekordów w tabeli.
3. PO USUNIĘCIU wyzwalacza:
Wyzwalacz po usunięciu jest wywoływany w SQL po usunięciu rekordu z tabeli.
4. PRZED WSTAWIĆ Aktywator:
Wyzwalacz przed wstawieniem jest wywoływany w SQL przed wstawieniem rekordów do tabeli.
5. Przed aktualizacją Wyzwalacz:
Wyzwalacz przed aktualizacją jest wywoływany w SQL przed aktualizacją istniejących rekordów w tabeli.
6. PRZED USUNIĘCIEM Aktywator:
Wyzwalacz przed usunięciem jest wywoływany w SQL przed usunięciem rekordu z tabeli.
Składnia wyzwalacza w SQL:
CREATE TRIGGER Trigger_Name
[BEFORE | AFTER] [Insert | Update | Delete]
ON [Table_Name]
[FOR EACH ROW | FOR EACH COLUMN]
AS
Set of SQL Statement
- W składni wyzwalacza musimy zdefiniować nazwę wyzwalacza zaraz po słowie kluczowym CREATE TRIGGER w składni.
- Po nazwie wyzwalacza musimy określić, który wyzwalacz chcemy wywołać, słowo kluczowe przed wyzwalaczem lub po wyzwalaczu z nazwą zdarzenia.
- Następnie musimy wspomnieć o nazwie tabeli, w której wystąpił wyzwalacz.
- Po nazwie tabeli musimy zdefiniować wyzwalacz na poziomie wiersza lub na poziomie kolumny.
- I na koniec musimy napisać instrukcję SQL, która działa na zachodzące zdarzenia.
Przykład wyzwalacza w SQL
Aby zrozumieć koncepcję wyzwalacza w SQL, musimy stworzyć tabelę, na której ma zostać wykonany wyzwalacz.
Następujące zapytanie tworzy tabelę Student w bazie danych SQL.
CREATE TABLE Student(
Student_rollno INT NOT NULL PRIMARY KEY,
FirstName varchar(40),
English_Marks INT,
Physics_Marks INT,
Chemistry_Marks INT,
Biology_Marks INT,
Maths_Marks INT,
Total_Marks INT,
Percentage INT);
Poniższe zapytanie pokazuje strukturę tabeli Student:
Uczeń DESC;
Pole | Typ | NULL | Klucz | Domyślne | Dodatkowe |
Student_RollNie | INT | NIE | PRI | NULL | |
Imię | Varchar(40) | TAK | NULL | ||
English_Marks | INT | TAK | NULL | ||
Znaki_fizyki | INT | TAK | NULL | ||
Chemia_Marks | INT | TAK | NULL | ||
Znaki_biologiczne | INT | TAK | NULL | ||
Maths_Marks | INT | TAK | NULL | ||
Total_Marks | INT | TAK | NULL | ||
Procent | INT | TAK | NULL |
Poniższe zapytanie uruchamia wyzwalacz przed wstawieniem rekordu ucznia do tabeli:
CREATE TRIGGER Student _Marks
BEFORE INSERT
ON
Student
FOR EACH ROW
SET new.Total_Marks = new.English_Marks + new.Physics_Marks + new.Chemistry_Marks + new.Biology_Marks + new.Maths_Marks,
new.Percentage = ( new.Total_Marks / 500) * 100;
Następujące zapytania wstawiają rekord do tabeli Student.
INSERT INTO Student (Student_RollNo, First_Name, English_Marks, Physics_Marks, Chemistry_Marks,Biology_Marks, Maths_Marks, Total_Marks, Percentage) VALUES ( 1, ‘Raman’, 90, 80, 75, 70 ,92, 0, 0);
Aby sprawdzić wynik powyższej instrukcji INSERT, musisz wpisać następującą instrukcję SELECT:
SELECT * FROM Student
Wyjście:
Student_RollNo | Imię | English_Marks | Znaki_fizyki | Chemistry_Marks | Znaki_biologiczne | Maths_Marks | Total_Marks | Procent |
1 | Raman | 90 | 80 | 75 | 70 | 92 | 407 | 81 |
Zalety wyzwalaczy w SQL
Poniżej przedstawiono trzy główne zalety wyzwalaczy w strukturalnym języku zapytań:
- SQL zapewnia alternatywny sposób zachowania integralności danych i referencji w tabelach.
- Wyzwalacze pomagają w automatycznym wykonywaniu zaplanowanych zadań.
- Wychwytują błędy w warstwie bazy danych różnych firm.
- Pozwalają one użytkownikom bazy danych na walidację wartości przed wstawieniem i aktualizacją.
Wady wyzwalaczy w SQL
Poniżej przedstawiono główne wady wyzwalaczy w Structured Query Language:
- Nie są skompilowane.
- Nie można znaleźć i debugować błędów w wyzwalaczach.
- Jeśli użyjemy złożonego kodu w wyzwalaczu, aplikacja będzie działać wolniej.
- Spust zwiększa duże obciążenie systemu bazy danych.