sql >> Databasteknik >  >> RDS >> Database

Trigger i SQL

I den här artikeln kommer vi att lära oss om begreppet trigger i SQL och dess implementering med hjälp av ett exempel.

En utlösare i Structured Query Language är en uppsättning procedursatser som körs automatiskt när det finns någon feedback till vissa händelser på tabellen i databasen. Utlösare används för att skydda dataintegriteten i databasen.

Låt oss se följande situation för att förstå begreppet trigger i SQL:

Anta att Supriya är informationsteknikchef i ett multinationellt företag. När posten för en ny anställd läggs in i databasen måste hon skicka meddelandet "Grattis" till varje ny anställd. Om det finns fem eller sex anställda kan Supriya göra det manuellt, men om antalet nya anställda är fler än tusen, då måste hon i ett sådant tillstånd använda triggern i databasen.

Därför måste Supriya skapa utlösaren i tabellen, som automatiskt skickar ett "Grattis"-meddelande till de nya anställda när deras post har infogats i databasen.

Triggern exekveras alltid med den specifika tabellen i databasen. Om vi ​​tar bort tabellen raderas även alla triggers som är kopplade till den tabellen automatiskt.

Utlösare i Structured Query Language anropas endast innan händelserna har inträffat eller efter händelserna har inträffat.

Endast tre händelser inträffar i triggern före eller efter händelserna är Infoga-händelserna, Uppdatera-händelserna eller Delete-händelserna.

1. INSERT Händelse :Infoga händelse inträffar när en ny post infogas i tabellen.

2. UPPDATERA Händelse :En uppdateringshändelse inträffar när de befintliga posterna uppdateras i tabellen.

3. DELETE Event: Händelsen Delete inträffar när posten raderas från tabellen.

Typer av utlösare i Structured Query Language

Följande är de sex typer av utlösare som används i Structured Query Language:

1. AFTER INSERT Trigger:

Efter infogningsutlösaren anropas i SQL efter att posterna har infogats i tabellen.

2. EFTER UPPDATERING Utlösare:

Utlösaren efter uppdatering anropas i SQL efter att de befintliga posterna i tabellen har uppdaterats.

3. AFTER DELETE Trigger:

Efter borttagningsutlösaren anropas i SQL efter att posten har tagits bort från tabellen.

4. INNAN SÄTT IN Utlösare:

Triggern före infogning anropas i SQL innan posterna infogas i tabellen.

5. INNAN UPPDATERING Utlösare:

Utlösaren före uppdatering anropas i SQL innan de befintliga posterna i tabellen uppdateras.

6. INNAN DELETE Utlösare:

Utlösaren före radering anropas i SQL innan posten tas bort från tabellen.

Syntax för 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 triggersyntaxen måste vi definiera triggernamnet precis efter nyckelordet CREATE TRIGGER i syntaxen.
  • Efter triggernamnet måste vi definiera vilken utlösare vi vill anropa, nyckelordet före utlösaren eller efterutlösaren med händelsenamnet.
  • Då måste vi nämna tabellnamnet där utlösaren inträffade.
  • Efter tabellnamnet måste vi definiera utlösaren på rad- eller kolumnnivåutlösaren.
  • Och i slutändan måste vi skriva SQL-satsen som agerar på de händelser som inträffar.

Exempel på trigger i SQL

För att förstå begreppet trigger i SQL måste vi skapa en tabell på vilken trigger ska exekveras.

Följande fråga skapar 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öljande fråga visar strukturen för elevtabellen:

DESC Student;

Fält Typ NULL Nyckel Standard Extra
Student_RollNo INT NEJ PRI NULL
First_Name 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
Procentandel INT JA NULL

Följande fråga aktiverar utlösaren innan elevposten infogas 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öljande frågor infogar 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);  

För att kontrollera utdata från ovanstående INSERT-sats, måste du skriva följande SELECT-sats:

SELECT * FROM Student

Utdata:

Student_RollNo First_Name English_Marks Physics_Marks Chemistry_Marks Biology_Marks Maths_Marks Total_Marks Procentandel
1 Raman 90 80 75 70 92 407 81

Fördelar med triggers i SQL

Följande är de tre huvudsakliga fördelarna med utlösare i Structured Query Language:

  1. SQL tillhandahåller ett alternativt sätt att upprätthålla data och referensintegritet i tabellerna.
  2. Triggers hjälper till att utföra de schemalagda uppgifterna automatiskt.
  3. De fångar upp felen i databaslagret hos olika företag.
  4. De tillåter databasanvändare att validera värden innan de infogas och uppdateras.

Nackdelar med triggers i SQL

Följande är de största nackdelarna med triggers i Structured Query Language:

  1. De är inte kompilerade.
  2. Det är inte möjligt att hitta och felsöka felen i utlösare.
  3. Om vi ​​använder den komplexa koden i utlösaren, gör det att programmet körs långsammare.
  4. Trigger ökar den höga belastningen på databassystemet.


  1. Får datumlista inom ett intervall i PostgreSQL

  2. Varför misslyckas den här frågan med EXECUTE IMMEDIATE?

  3. Förstå ProxySQL-granskningsloggen

  4. Hur man installerar MariaDB 10 på RHEL 8