In dit artikel zullen we aan de hand van een voorbeeld leren over het concept van trigger in SQL en de implementatie ervan.
Een trigger in Structured Query Language is een set procedurele instructies die automatisch wordt uitgevoerd wanneer er feedback is op bepaalde gebeurtenissen op de tabel in de database. Triggers worden gebruikt om de integriteit van de gegevens in de database te beschermen.
Laten we de volgende situatie eens bekijken om het concept van trigger in SQL te begrijpen:
Stel dat Supriya de informatietechnologiemanager is in een multinationale onderneming. Wanneer het record van een nieuwe medewerker in de database wordt ingevoerd, moet ze het bericht 'Gefeliciteerd' naar elke nieuwe medewerker sturen. Als er vijf of zes werknemers zijn, kan Supriya dit handmatig doen, maar als het aantal nieuwe werknemers meer dan duizend is, moet ze in een dergelijke toestand de trigger in de database gebruiken.
Supriya moet dus de trigger in de tabel maken, die automatisch een 'Gefeliciteerd'-bericht naar de nieuwe medewerkers stuurt zodra hun record in de database is ingevoerd.
De trigger wordt altijd uitgevoerd met de specifieke tabel in de database. Als we de tabel verwijderen, worden alle triggers die aan die tabel zijn gekoppeld ook automatisch verwijderd.
Triggers in de Structured Query Language worden alleen aangeroepen voordat de gebeurtenissen hebben plaatsgevonden of nadat de gebeurtenissen hebben plaatsgevonden.
Er vinden slechts drie gebeurtenissen plaats in de trigger voor of na de gebeurtenissen:de gebeurtenissen invoegen, de gebeurtenissen bijwerken of de gebeurtenissen verwijderen.
1. GEBEURTENIS INVOEREN :Insert-gebeurtenis vindt plaats wanneer een nieuw record in de tabel wordt ingevoegd.
2. UPDATE-evenement :Er vindt een update-gebeurtenis plaats wanneer de bestaande records in de tabel worden bijgewerkt.
3. Event VERWIJDEREN: De Delete-gebeurtenis vindt plaats wanneer het record uit de tabel wordt verwijderd.
Typen triggers in de Structured Query Language
Hieronder volgen de zes typen triggers die in de Structured Query Language worden gebruikt:
1. NA INSERT-trigger:
De trigger na invoegen wordt aangeroepen in SQL nadat de records in de tabel zijn ingevoegd.
2. NA UPDATE-trigger:
De trigger na update wordt aangeroepen in SQL nadat de bestaande records in de tabel zijn bijgewerkt.
3. NA VERWIJDEREN Trigger:
De trigger voor verwijderen na het verwijderen wordt aangeroepen in SQL nadat het record uit de tabel is verwijderd.
4. VOOR INSERT Trigger:
De trigger voor het invoegen wordt aangeroepen in SQL voordat de records in de tabel worden ingevoegd.
5. VOOR UPDATE Trigger:
De trigger voor de update wordt aangeroepen in SQL voordat de bestaande records in de tabel worden bijgewerkt.
6. VOOR DELETE Trigger:
De trigger voor verwijderen wordt aangeroepen in SQL voordat het record uit de tabel wordt verwijderd.
Syntaxis van trigger in SQL:
CREATE TRIGGER Trigger_Name
[BEFORE | AFTER] [Insert | Update | Delete]
ON [Table_Name]
[FOR EACH ROW | FOR EACH COLUMN]
AS
Set of SQL Statement
- In de triggersyntaxis moeten we de triggernaam definiëren net na het CREATE TRIGGER-sleutelwoord in de syntaxis.
- Na de triggernaam moeten we definiëren welke trigger we willen aanroepen, de before-trigger of het after-triggersleutelwoord met de gebeurtenisnaam.
- Vervolgens moeten we de tabelnaam vermelden waarop de trigger is opgetreden.
- Na de tabelnaam moeten we de trigger definiëren op rij- of kolomniveau.
- En uiteindelijk moeten we de SQL-instructie schrijven die inwerkt op de gebeurtenissen die zich voordoen.
Voorbeeld van trigger in SQL
Om het concept van trigger in de SQL te begrijpen, moeten we een tabel maken waarop trigger moet worden uitgevoerd.
De volgende query creëert de Student-tabel in de SQL-database.
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);
De volgende query toont de structuur van de Student-tabel:
DESC-student;
Veld | Type | NULL | Sleutel | Standaard | Extra |
Student_RollNo | INT | NEE | PRI | NULL | |
Voornaam | Varchar(40) | JA | NULL | ||
English_Marks | INT | JA | NULL | ||
Physics_Marks | INT | JA | NULL | ||
Chemistry_Marks | INT | JA | NULL | ||
Biology_Marks | INT | JA | NULL | ||
Maths_Marks | INT | JA | NULL | ||
Total_Marks | INT | JA | NULL | ||
Percentage | INT | JA | NULL |
De volgende query activeert de trigger voordat het studentrecord in de tabel wordt ingevoegd:
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;
De volgende query's voegen het record toe aan de tabel 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);
Om de uitvoer van de bovenstaande INSERT-instructie te controleren, moet u de volgende SELECT-instructie typen:
SELECT * FROM Student
Uitvoer:
Student_RollNo | Voornaam | English_Marks | Physics_Marks | Chemistry_Marks | Biology_Marks | Maths_Marks | Total_Marks | Percentage |
1 | Raman | 90 | 80 | 75 | 70 | 92 | 407 | 81 |
Voordelen van triggers in SQL
Hieronder volgen de drie belangrijkste voordelen van triggers in Structured Query Language:
- SQL biedt een alternatieve manier om de gegevens en referentiële integriteit in de tabellen te behouden.
- Triggers helpen bij het automatisch uitvoeren van de geplande taken.
- Ze vangen de fouten op in de databaselaag van verschillende bedrijven.
- Ze stellen de databasegebruikers in staat om waarden te valideren voordat ze worden ingevoegd en bijgewerkt.
Nadelen van triggers in SQL
Hieronder volgen de belangrijkste nadelen van triggers in Structured Query Language:
- Ze zijn niet gecompileerd.
- Het is niet mogelijk om de fouten in triggers te vinden en te debuggen.
- Als we de complexe code in de trigger gebruiken, wordt de toepassing langzamer.
- Trigger verhoogt de hoge belasting van het databasesysteem.