Database
 sql >> Baza danych >  >> RDS >> Database

Wyzwalacz w SQL

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ń:

  1. SQL zapewnia alternatywny sposób zachowania integralności danych i referencji w tabelach.
  2. Wyzwalacze pomagają w automatycznym wykonywaniu zaplanowanych zadań.
  3. Wychwytują błędy w warstwie bazy danych różnych firm.
  4. 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:

  1. Nie są skompilowane.
  2. Nie można znaleźć i debugować błędów w wyzwalaczach.
  3. Jeśli użyjemy złożonego kodu w wyzwalaczu, aplikacja będzie działać wolniej.
  4. Spust zwiększa duże obciążenie systemu bazy danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak rozwiązać błąd `prisma/klient jeszcze się nie zainicjalizował` w Vercel

  2. Łączenie Delphi z Salesforce.com

  3. Jak upuścić tabelę w SQL?

  4. Programowanie baz danych w Pythonie z SQL Express dla początkujących

  5. Prezentacje slajdów i próbki z #SQLintersection