I denne artikel lærer vi om begrebet trigger i SQL og dets implementering ved hjælp af et eksempel.
En trigger i Structured Query Language er et sæt proceduremæssige sætninger, der udføres automatisk, når der er nogen feedback til bestemte hændelser på bordet i databasen. Triggere bruges til at beskytte integriteten af dataene i databasen.
Lad os se følgende situation for at forstå begrebet trigger i SQL:
Antag, at Supriya er informationsteknologichef i en multinational virksomhed. Når registreringen af en ny medarbejder er indtastet i databasen, skal hun sende 'Tillykke'-meddelelsen til hver ny medarbejder. Hvis der er fem eller seks ansatte, kan Supriya gøre det manuelt, men hvis antallet af nye medarbejdere er mere end tusinde, så skal hun i en sådan tilstand bruge triggeren i databasen.
Supriya skal derfor oprette triggeren i tabellen, som automatisk sender en 'Tillykke'-besked til de nye medarbejdere, når deres registrering er indsat i databasen.
Triggeren udføres altid med den specifikke tabel i databasen. Hvis vi fjerner tabellen, slettes alle de triggere, der er knyttet til den tabel, også automatisk.
Udløsere i det strukturerede forespørgselssprog kaldes kun, før hændelserne er indtruffet, eller efter hændelserne er opstået.
Kun tre hændelser forekommer i triggeren før eller efter hændelserne er Indsæt hændelser, Opdater hændelser eller Slet hændelser.
1. INDSÆT begivenhed :Indsæt hændelse opstår, hver gang en ny post indsættes i tabellen.
2. OPDATERING begivenhed :En opdateringshændelse opstår, hver gang de eksisterende poster opdateres i tabellen.
3. SLET Begivenhed: Hændelsen Slet opstår, når posten slettes fra tabellen.
Typer af udløsere i Structured Query Language
Følgende er de seks typer af udløsere, der bruges i Structured Query Language:
1. EFTER INSERT Trigger:
Efter indsættelsesudløseren aktiveres i SQL, efter at posterne er indsat i tabellen.
2. EFTER OPDATERING Trigger:
Efter opdatering-triggeren aktiveres i SQL, efter at de eksisterende poster i tabellen er opdateret.
3. EFTER SLETT Trigger:
Udløseren efter sletning aktiveres i SQL, efter at posten er slettet fra tabellen.
4. FØR INDSÆT Trigger:
Før insert-triggeren aktiveres i SQL, før posterne indsættes i tabellen.
5. FØR OPDATERING Trigger:
Før opdatering-triggeren aktiveres i SQL, før de eksisterende poster i tabellen opdateres.
6. FØR SLETT Trigger:
Før sletning-triggeren aktiveres i SQL, før posten slettes fra tabellen.
Syntaks for trigger i SQL:
CREATE TRIGGER Trigger_Name
[BEFORE | AFTER] [Insert | Update | Delete]
ON [Table_Name]
[FOR EACH ROW | FOR EACH COLUMN]
AS
Set of SQL Statement
- I triggersyntaksen skal vi definere triggernavnet lige efter CREATE TRIGGER nøgleordet i syntaksen.
- Efter triggernavnet skal vi definere, hvilken trigger vi vil aktivere, før trigger eller after trigger søgeordet med hændelsesnavnet.
- Derefter skal vi nævne det tabelnavn, hvorpå triggeren fandt sted.
- Efter tabelnavnet skal vi definere triggeren på række- eller kolonneniveau-triggeren.
- Og i sidste ende skal vi skrive SQL-sætningen, der virker på de hændelser, der sker.
Eksempel på trigger i SQL
For at forstå begrebet trigger i SQL'en skal vi oprette en tabel, hvorpå triggeren skal udføres.
Følgende forespørgsel opretter elevtabellen i SQL-databasen.
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);
Følgende forespørgsel viser strukturen af elevtabellen:
DESC Student;
Felt | Type | NULL | Nøgle | Standard | Ekstra |
Student_RollNo | INT | NEJ | PRI | NULL | |
Fornavn | Varchar(40) | JA | NULL | ||
English_Marks | INT | JA | NULL | ||
Fysik_mærker | INT | JA | NULL | ||
Kemi_mærker | INT | JA | NULL | ||
Biologi_mærker | INT | JA | NULL | ||
Maths_Marks | INT | JA | NULL | ||
Total_Marks | INT | JA | NULL | ||
Procentdel | INT | JA | NULL |
Følgende forespørgsel aktiverer udløseren før indsættelsen af elevposten i tabellen:
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;
Følgende forespørgsler indsætter posten i elevtabellen.
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);
For at kontrollere outputtet af ovenstående INSERT-sætning, skal du skrive følgende SELECT-sætning:
SELECT * FROM Student
Output:
Student_RollNo | Fornavn | Engelske_mærker | Fysik_mærker | Kemi_mærker | Biologi_mærker | Matematikmærker | Total_Marks | Procentdel |
1 | Raman | 90 | 80 | 75 | 70 | 92 | 407 | 81 |
Fordele ved triggere i SQL
Følgende er de tre vigtigste fordele ved triggere i Structured Query Language:
- SQL giver en alternativ måde at vedligeholde data og referenceintegritet i tabellerne.
- Triggere hjælper med at udføre de planlagte opgaver automatisk.
- De fanger fejlene i databaselaget for forskellige virksomheder.
- De giver databasebrugerne mulighed for at validere værdier før indsættelse og opdatering.
Ulemper ved triggere i SQL
Følgende er de største ulemper ved triggere i Structured Query Language:
- De er ikke kompilerede.
- Det er ikke muligt at finde og fejlsøge fejlene i triggere.
- Hvis vi bruger den komplekse kode i triggeren, får det programmet til at køre langsommere.
- Trigger øger den høje belastning af databasesystemet.