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:
- SQL tillhandahåller ett alternativt sätt att upprätthålla data och referensintegritet i tabellerna.
- Triggers hjälper till att utföra de schemalagda uppgifterna automatiskt.
- De fångar upp felen i databaslagret hos olika företag.
- 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:
- De är inte kompilerade.
- Det är inte möjligt att hitta och felsöka felen i utlösare.
- Om vi använder den komplexa koden i utlösaren, gör det att programmet körs långsammare.
- Trigger ökar den höga belastningen på databassystemet.