Skapa och ta bort utlösare i MySQL

Utlösarprogrammering i MySQL


Utlösare eller kallas vanligtvis programmera "triggers" De är en typ av objekt som finns i databaser. När en viss händelse eller operation utförs i nämnda databas, utför vår trigger automatiskt en åtgärd som vi tidigare har programmerat den för.

De utlösare de aktiveras automatiskt när INSERT, DELETE eller UPDATE -operationer utförs, som infogas, tas bort eller uppdateras. När vi utför någon av dessa åtgärder utför våra triggers en instruktion eller ett instruktionsblock som de tidigare har programmerats för.

De strukturen för en utlösare i MySQL är nästa:

FÖRSTORA

 [DEFINER = {användare | CURRENT_USER}]
Denna del av koden berättar för databashanteraren vilken användare som har rättigheter att kunna ringa till våra utlösare när DML -händelser kommer att uppstå. Standardvärdet är CURRENT_USER.

För att välja namnet på vår utlösare finns ett mycket bra kriterium att följa som är: Lägg först namnet på tabellen, sedan initialen för DML -operationen, (I för Infoga, D för Radera eller U för Uppdatering) och sedan initial från exekveringsögonblicket (antingen A för efter eller B för före).

 INNAN | DESPUES DE
Det indikerar bara det ögonblick då vår utlösare kommer att köras, det vill säga om utlösaren avfyras före DML -händelsen (före) eller efter (efter).
 SÄTT IN | RADERA | UPPDATERING
Den berättar vad som kommer att vara meningen som vi kommer att använda för att utlösa vår utlösare, Infoga för att mata in data, Radera för att radera den eller Uppdatera för att ändra den.
 PÅ bordets namn
Det anger tabellen som är associerad med vår utlösare.
 FÖR VARJE RAD
Det berättar bara att utlösaren kommer att köras för varje rad i vårt bord som tidigare definierats i ON.

De sista sql -uttalande eller blocket av instruktioner kommer att vara den eller de meningar som vår utlösare kommer att utföra när den träder i kraft.

Utlösande praktiskt exempel


Nu kommer vi att se ett praktiskt exempel på hur man programmerar en trigger för att sälja bussbiljetter till en viss rutt medan det finns lediga platser.
Vi kan använda vilken programvara som helst som accepterar triggers och lagrade processer.

1: a Vi skapar en databas:

2: a i rad vi skapar två tabeller i vår databas. En av dem är där vi kommer att lagra de sålda biljetterna och den andra skapas så att vi kan veta hur många biljetter som är tillgängliga för den angivna resan.

Här är tabellen som innehåller information om antalet sålda biljetter:

Därefter skapar vi tabellen där vi sparar informationen om antalet biljetter som är tillgängliga för varje specifik resa:

Tredje nu vi skapar bordet för att lagra de olika resorna:

4: e Efter att ha skapat databasen och tabellerna ska vi skapa SQL -frågan för utlösaren, men innan detta måste vi veta vad som är NYA och GAMLA identifierare i utlösarna.

För att vår utlösare ska vara relaterad till en eller flera specifika kolumner i tabellen måste vi använda de identifierare som nämns ovan NY OCH GAMMEL.
GAMMAL: indikerar kolumnens gamla värde
NY: det nya värdet det kan ta.
Som ett exempel: OLD.idtrip eller NEW.idtrip.

Med INSERT uttalande Vi kan bara använda den NYA identifieraren eftersom funktionen som genereras med INSERT är att introducera nya värden till kolumnen eller kolumnerna.
Om vi ​​använder DELETE -uttalande i det här fallet måste vi använda den gamla identifieraren eftersom vi med DELETE tar bort värden som redan fanns tidigare.
Å andra sidan, om vi använder UPDATE uttalande Vi kan använda gamla och nya, eftersom vi kan hänvisa till gamla eller nya värden eftersom vi kommer att ändra poster som redan fanns för andra värden.

Nu när vi förstår identifierarna skulle sql -satsen se ut så här:

Om vi ​​kör SQL -satsen i ett program som stöder det, skulle vi verkligen se det utlösaren har skapats.

För att se hur det fungerar introducerar vi några logiska värden för en bussresa, till exempel:

Här har jag angett i resan med identifieringsnummer 1 att det finns 45 platser tillgängliga.

Efter detta säljer vi en biljett, till exempel den biljett som motsvarar plats 14:

När vi gör denna fråga, om vi går till fältet current_availability, kommer vi att se att 45 har ändrats till 44 sedan utlösaren 'update_availability' aktiverades.

De fördelarna med att använda triggers är att olika användningsfall kan programmeras och att databasens integritet bibehålls, det vill säga det ger oss möjlighet att skapa rutiner som utför vissa åtgärder automatiskt utan att behöva göra det manuellt. Det skulle vara mycket giltigt för validering av vilken typ av information som helst eller för att göra en uppföljning av databasens rörelser.

Ett annat mycket intressant exempel som jag nyss nämnde i valideringarna är att bestämma en majoritetsålder innan du gör en mening, till exempel:

Efter att ha sett exemplen på att skapa triggers måste vi veta hur vi får tillgång till informationen om utlösaren. För detta kommer vi att använda meningarna:

För att se utlösarna i vår databas:

 VISA TRIGGERS
Å andra sidan, om vi vill se informationen om utlösaren som har skapats för tillfället:
 VISA SKAPA TRIGGER student_BU_trigger
Slutligen, efter att ha sett hur triggers skapas och visas, kommer vi att se vad som används för att eliminera en trigger som vi har i vår databas.
För att göra detta måste vi bara använda det typiska kommandot delete: släppa.
 DROP TRIGGER [IF_EXISTS] trigger_name

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave