sql >> Database >  >> RDS >> Database

Trigger in SQL

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:

  1. SQL biedt een alternatieve manier om de gegevens en referentiële integriteit in de tabellen te behouden.
  2. Triggers helpen bij het automatisch uitvoeren van de geplande taken.
  3. Ze vangen de fouten op in de databaselaag van verschillende bedrijven.
  4. 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:

  1. Ze zijn niet gecompileerd.
  2. Het is niet mogelijk om de fouten in triggers te vinden en te debuggen.
  3. Als we de complexe code in de trigger gebruiken, wordt de toepassing langzamer.
  4. Trigger verhoogt de hoge belasting van het databasesysteem.


  1. Schemawijzigingen in MySQL en MariaDB op een veilige manier uitvoeren

  2. Hoe Python met SQL Server te verbinden om het backend-proces te automatiseren

  3. SQLite groeperen op

  4. Afkappen (niet ronde) decimalen in SQL Server