sql >> Database teknologi >  >> RDS >> Database

Trigger i SQL

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:

  1. SQL giver en alternativ måde at vedligeholde data og referenceintegritet i tabellerne.
  2. Triggere hjælper med at udføre de planlagte opgaver automatisk.
  3. De fanger fejlene i databaselaget for forskellige virksomheder.
  4. 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:

  1. De er ikke kompilerede.
  2. Det er ikke muligt at finde og fejlsøge fejlene i triggere.
  3. Hvis vi bruger den komplekse kode i triggeren, får det programmet til at køre langsommere.
  4. Trigger øger den høje belastning af databasesystemet.


  1. Sådan undgår du sløjfetriggeropkald i PostgreSQL 9.2.1

  2. Tjek, om en streng indeholder en understreng i SQL Server 2005, ved hjælp af en lagret procedure

  3. Hvad skal du kontrollere, hvis PostgreSQL-hukommelsesudnyttelsen er høj

  4. MySQL lagrede procedurer